2015-01-06 2 views
0

Я пытаюсь сериализовать объект, который я создал здесь:Сериализация JSON объект ошибка Generic типа

using (MemoryStream memStream = new MemoryStream()) 
{ 
    DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(CaseTreatment)); 
    ser.WriteObject(memStream, ct); 
} 

Это ct здесь: List<CaseTreatment> ct = new List<CaseTreatment>();

Всякий раз, когда мой код попадает ser.WriteObject(memStream, ct); я получаю следующее сообщение об ошибке :

Type 'System.Collections.Generic.List`1[[FileUpload.Models.CaseTreatment, FileUpload, 
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' with data contract name 
'ArrayOfCaseTreatment:http://schemas.datacontract.org/2004/07/FileUpload.Models' is 
not expected. Consider using a DataContractResolver or add any types not known 
statically to the list of known types - for example, by using the KnownTypeAttribute 
attribute or by adding them to the list of known types passed to 
DataContractSerializer. 

Мой CaseTreatment объект выглядит следующим образом:

[DataContract] 
public class CaseTreatment 
{ 
    [DataMember] 
    public Bridge BridgeTreatment; 
} 

И Bridge выглядит следующим образом:

[DataContract] 
public class Bridge : CaseGeneric 
{ 
    [DataMember] 
    public bool IsBridgeTreatment; 

    public Bridge(XElement treatment, IEnumerable<XElement> orderDetails) 
    { 
     var tn = Util.GetTitle(treatment); 
     this.Instruction = Util.GetInstruction(tn); 
     this.Id = 2; 
     this.Name= "Bridge"; 
     this.Something = Util.GetSomething(tn); 
    } 

    public Bridge() 
    { 

    } 

} 

Something еще один объект:

[DataContract] 
public class Something 
{ 
    [DataMember] 
    public string Number; 
} 

И CaseGeneric имеет все это:

[DataContract] 
public class CaseGeneric 
{ 
    [DataMember] 
    public string Instruction; 
    [DataMember] 
    public int Id; 
    [DataMember] 
    public string Name; 
    [DataMember] 
    public List<Something> Something; 
} 

ли кто-нибудь сможет Помогите? Также, пожалуйста, дайте мне знать, если вам нужна дополнительная информация, я буду более чем счастлив добавить/отредактировать что-нибудь или ответить на любые вопросы. Я думал, что мне может понадобиться украсить мои объекты [KnownType(typeof(blah))] Я просто не знаю, где и где.

ответ

1

Вы пытаетесь написать объект в списке. Попытайтесь изменить? DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(CaseTreatment)); - DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(List<CaseTreatment>));

+0

Yup that was it! Та же глупая ошибка! – scapegoat17

Смежные вопросы