C#JSON自定义序列化
有没有一种方法/库可以让我自定义类似于GSON自定义序列化器的JSON序列化?
这是我想要得到的:
这个对象: KeyValuePair(“Age”,10)myAge
通常会被序列化为
“myAge”:{“Key”:“Age”,“Value”:10}
虽然我希望它序列化如下: “年龄”:10代替。 有任何想法吗?
首先我建议使用newton json dll 。
其次你需要为KeyValuePair创建自定义JsonConverter ,如下所示:
public class PairConverter : JsonConverter { public override bool CanConvert(Type objectType) { return objectType == typeof(KeyValuePair); } 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)value; writer.WriteValue(item.Value); writer.Flush(); } }
然后为’Age’属性添加JsonConverter属性,如下所示:
public class Persons { [JsonConverter(typeof(PairConverter))] public KeyValuePair Age { get; set; } }
最后,使用示例:
var persons = new Persons() { Age = new KeyValuePair("Age", 10) }; var json = JsonConvert.SerializeObject(persons); // {Age:10}