別のデータ コントラクト オブジェクトをパラメーターとして含む .net オブジェクトをシリアル化しようとしています。コードは次のとおりです...
[DataContract]
public class JsonObject2
{
[DataMember(Name = "field1")]
string field1 { get; set; }
[DataMember(Name = "field2")]
string field2 { get; set; }
[DataMember(Name = "field3")]
object[][] test = { new object[]{"key1", "value1"}, new object[]{"key2", "value2"}, new object[]{"key3", "value3"} };
}
[DataContract]
public class JsonObject3
{
[DataMember(Name = "field1")]
public string field1 { get; set; }
[DataMember(Name = "field2")]
public object field2 { get; set; }
}
DataContractJsonSerializer dcjs2 = new DataContractJsonSerializer(typeof(JsonObject3));
JsonObject3 obj3 = new JsonObject3();
obj3.field1 = "hello";
obj3.field2 = new JsonObject2();
dcjs2.WriteObject(s, obj3);
s.Position = 0;
MessageBox.Show(new StreamReader(s).ReadToEnd());
上記を実行すると、次の例外が発生します...
"{"データ コントラクト名が 'Form1.JsonObject2:http://schemas.datacontract.org/2004/07/JSONParser' のタイプ 'JSONParser.Form1+JsonObject2' は想定されていません。たとえば、KnownTypeAttribute 属性を使用するか、DataContractSerializer に渡される既知の型のリストにそれらを追加することにより、静的に認識されていない型を既知の型のリストに追加します。"}"
その例外で与えられた推奨事項を実行する方法がわかりません。
- KnownTypes のリストにどのように追加しますか?
- KnownTypeAttribute をどのように使用しますか?