2016-08-31 8 views
0

custom Converterを使用して、Windowsユニバーサルアプリケーション内のC#オブジェクトをJSONにシリアル化して、オブジェクトにdescription文字列の後にノードの名前を付けます。だからではなく、C#で単一の子jsonノードを宣伝する

{ 
    "description":"upper-left", 
    "value":23 
}, 
{ 
    "description":"upper-right", 
    "value":24 
} 

の私は

[ 
    { 
     "upper-left":23 
    }, 
    { 
     "upper-right":24 
    } 
] 

これはコンバータの適応バージョンを使用して、私のために正常に動作を取得します。しかし、次のように、これらのキー:値のペアを1つのノードに収集したいと考えています。

{ 
    "upper-left":23, 
    "upper-right":24 
} 

どのようにすればいいですか?

答えて

0

私は、このためのカスタムコンバータを作成 -

internal class MyObjectJsonConverter : JsonConverter 
{ 
    public override bool CanConvert(Type objectType) 
    { 
     return true; 
    } 

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) 
    { 
     var dataList = value as List<RootObject>; 

     writer.WriteStartObject(); 
     foreach (var data in dataList) 
     { 
      writer.WritePropertyName(data.description); 
      writer.WriteValue(data.value); 
     } 
     writer.WriteEndObject(); 
    } 
} 

-

public class RootObject 
{ 
    public string description { get; set; } 
    public int value { get; set; } 
} 


var s = JsonConvert.SerializeObject(new List<RootObject> { 
      new RootObject 
      { 
       description = "upper-left", 
       value = 23 
      }, 
      new RootObject 
      { 
       description = "upper-right", 
       value = 24 
      } 
     }, jss); 
関連する問題