Ale*_*kor 11 .net asp.net-mvc serialization json
我有一个属性类型为Point的类(.NET Framework中的struct).我使用Newton.Json的JsonConvert将它序列化为JSON.但结果是
"Point" : "100,100"
Run Code Online (Sandbox Code Playgroud)
代替
"Point" : { X: "100", Y: "100"}
Run Code Online (Sandbox Code Playgroud)
当我用标准JavascriptSerializer替换JsonConvert时,一切正常.
但是我想从JSON.Net使用JsonConverter,因为它要快得多.
那是因为Point
已定义了自己的TypeConverter
,JSON.NET使用它来进行序列化.我不确定是否有一种干净的方法可以关闭此行为,但您当然可以按照自己JsonConverter
的方式创建自己的行为:
class PointConverter : JsonConverter
{
public override void WriteJson(
JsonWriter writer, object value, JsonSerializer serializer)
{
var point = (Point)value;
serializer.Serialize(
writer, new JObject { { "X", point.X }, { "Y", point.Y } });
}
public override object ReadJson(
JsonReader reader, Type objectType, object existingValue,
JsonSerializer serializer)
{
var jObject = serializer.Deserialize<JObject>(reader);
return new Point((int)jObject["X"], (int)jObject["Y"]);
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(Point);
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样使用它:
JsonConvert.SerializeObject(
new { Point = new Point(15, 12) },
new PointConverter())
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2155 次 |
最近记录: |