Я пытаюсь сериализовать объект .net, содержит в качестве параметра другой объект контракта данных. Код выглядит следующим образом ....NET JSON Сериализация: как иметь DataContract как член другого DataContract
[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. "}"
Я не могу понять, как выполнить любую из рекомендаций, приведенных в этом исключении.
- Как вы относитесь к списку известных типов?
- Как вы используете KnownTypeAttribute?