我正在尝试序列化一个包含另一个数据协定对象作为参数的 .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());
执行上述操作会导致以下异常...
"{"类型 'JSONParser.Form1+JsonObject2' 与数据合同名称 'Form1.JsonObject2:http://schemas.datacontract.org/2004/07/JSONParser' 不是预期的。将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将它们添加到传递给 DataContractSerializer 的已知类型列表中。"}"
我不知道如何执行该例外中给出的任何建议。
- 您如何添加到 KnownTypes 列表中?
- 你如何使用 KnownTypeAttribute ?