【问题标题】:Promoting single child json nodes in C#在 C# 中提升单个子 json 节点
【发布时间】:2016-08-31 11:36:01
【问题描述】:

我正在将 Windows 通用应用程序中的 C# 对象序列化为 JSON,使用 custom Converter 在对象中的 description 字符串之后命名节点。所以不是

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

我明白了

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

这对我来说很好,使用转换器的改编版本。但是,我想在单个节点中收集这些键:值对,如下所示:

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

我怎样才能做到这一点?

【问题讨论】:

    标签: c# json serialization


    【解决方案1】:

    我为此创建了一个自定义转换器 -

    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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-12
      相关资源
      最近更新 更多