次のクラスを定義しています。
<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
か?
DataContractJsonSerializer
列挙型を文字列表現にシリアル化する方がはるかに簡単なので、代わりに JSON.NET を使用することを好みます。