C# JSON 自定义序列化

2024-01-08

有没有一种方法/库允许我自定义类似于 GSON 自定义序列化器的 JSON 序列化?

这是我想要得到的:

这个对象:KeyValuePair("年龄",10) myAge

通常会被序列化为

“我的年龄”: { “关键”:“年龄”, “价值”:10 }

虽然我希望它像这样序列化:“年龄”:10反而。有任何想法吗?


首先我建议使用牛顿 json dll http://james.newtonking.com/pages/json-net.aspx.

其次您需要创建自定义Json转换器 https://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_JsonConverter.htm对于 KeyValuePair 像这样:

  public class PairConverter : JsonConverter
  {
    public override bool CanConvert(Type objectType)
    {
       return objectType == typeof(KeyValuePair<string, int>);
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
      throw new NotImplementedException();
    }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
      var item = (KeyValuePair<string, int>)value;
      writer.WriteValue(item.Value);
      writer.Flush();
    }
  }

然后为“Age”属性添加 JsonConverter 属性,如下所示:

 public class Persons
 {
   [JsonConverter(typeof(PairConverter))]
   public KeyValuePair<string, int> Age { get; set; }
 }

最后是使用示例:

 var persons = new Persons()
 {
    Age = new KeyValuePair<string, int>("Age", 10)
 };
 var json = JsonConvert.SerializeObject(persons); // {Age:10}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# JSON 自定义序列化 的相关文章

随机推荐