有没有一种方法/库可以让我像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<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(); } }
然后像这样为“年龄”属性添加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}