【发布时间】:2013-07-07 18:14:01
【问题描述】:
我定义了以下类:
<TypeConverter(GetType(ExpandableObjectConverter))>
<DataContract()>
Public Class Vector3
<DataMember()> Public Property X As Double
<DataMember()> Public Property Y As Double
<DataMember()> Public Property Z As Double
Public Overrides Function ToString() As String
Return String.Format("({0}, {1}, {2})",
Format(X, "0.00"),
Format(Y, "0.00"),
Format(Z, "0.00"))
End Function
End Class
使用 DataContractJsonSerializer 我按预期收到以下 JSON:
{
"Vector": {
"X": 1.23,
"Y": 4.56,
"Z": 7.89
}
}
但是,JSON.NET 会产生:
{
"Vector": "(1.23, 4.56, 7.89)"
}
如果我从类中删除 ExpandableObjectConverter 属性,JSON.NET 会产生预期的结果(与 DataContractJsonSerializer 相同)。
不幸的是,我需要 ExpandableObjectConverter 以便该类与属性网格一起使用。
有没有办法告诉 JSON.NET 忽略ExpandableObjectConverters?
我更喜欢使用 JSON.NET 而不是 DataContractJsonSerializer,因为将枚举序列化为其字符串表示形式要容易得多。
【问题讨论】:
-
您可能需要实现自己的转换器:stackoverflow.com/questions/8030538/…
标签: c# json vb.net json.net typeconverter