2016-12-21 4 views
0
Thats my class. 

class MyClass1 : IInterface1 
{ 
    public MyClass1() 
    { 
     this.Interface2s = new List<IInterface2>(); 
    } 

    public string strI1 { get; set; } 
    public int intI1 { get; set; } 
    public IList<IInterface2> Interface2s { get; set; } 
    public int intC1 { get; set; } 
} 

В приложении я сериализовал его с некоторыми случайными значениями. Результат:Как десериализовать список объектов от json

{ 
    "strI1": "strI1", 
    "intI1": 2, 
    "Interface2s": [ 
    { 
     "intI2": 111 
    }, 
    { 
     "intI2": 222 
    }, 
    { 
     "intI2": 333 
    } 
    ] 
} 

Тогда я десериализация этой строки назад, но я теряю значение в моей IList

result of deserialization next: 
{ 
    "strI1": "strI1", 
    "intI1": 2, 
    "Interface2s": [ 
    { 
     "intI2": 0 
    }, 
    { 
     "intI2": 0 
    }, 
    { 
     "intI2": 0 
    } 
    ] 
} 

десериализовать интерфейс Я использую этот пример http://www.newtonsoft.com/json/help/html/DeserializeWithDependencyInjection.htm

I необходимо также десериализовать значения в списке. Какие-либо предложения?

+1

Что вы используете для сериализации своего класса в json? –

+0

Уже существует очень большое количество этих вопросов в stackoverflow. Не отвечает ни один из этих ответов? Пожалуйста, попробуйте, и я уверен, что вы можете понять это. – KjetilNordin

+2

Возможный дубликат [Конвертировать Json String в список объектов C#] (http://stackoverflow.com/questions/22191167/convert-json-string-to-c-sharp- object-list) – KjetilNordin

ответ

2

Мой совет просто использовать http://www.newtonsoft.com/json

JsonConvert.SerializeObject(target) 

и десериализации

JsonConvert.DeSerializeObject<MyClass1>(target) 

И это должно быть просто так просто.

+0

Извините за плохой пример, но я использую json.net, и есть проблема –

+0

'JsonConvert.DeSerializeObject (target)' возвращает мне MyClass и List in он состоит из 3 пустых объектов. –

+0

Попробуйте поэкспериментировать с http://www.newtonsoft.com/json/help/html/serializetypenamehandling.htm во время сериализации. Это может быть проблемой, это может быть десериализация интерфейса с неправильным типом, поэтому путем внедрения информации о типе, которая может решить вашу проблему. @RiseAgainst – gmn