2017-02-06 5 views
-4

У меня проблема с десериализацией json с json newtonsoft. Он не может десериализовать все параметры объекта при вызове API. Ниже приведен весь мой код. Как вы можете видеть с постапи, пчелы правильно отвечают на все параметры, это когда десериализует, кто теряет параметр.Потеря параметра в десериализации с помощью Json.NewSofton C# Формы Xamarin

newtonsoft JSON декодирования:

var response = await request.GetResponseAsync(); 
       var stream = response.GetResponseStream(); 

       StreamReader reader = new StreamReader(stream); 
       var xml = reader.ReadToEnd(); 
       String indexof = xml.Substring(76, xml.Length - 85); 

       USR_User_ReturnList = JsonConvert.DeserializeObject<List<OBJ_User>>(indexof); 

объект класса:

public class OBJ_User 
    { 
     public int DLR_Id { get; set; } 
     public string DLR_Username { get; set; } 
     public string DLR_Password_Hash { get; set; } 
     public object DLR_Nome { get; set; } 
     public string DLR_Cognome { get; set; } 
     public int DLR_Tipo { get; set; } 
     public string DLR_Azienda { get; set; } 
     public object DLR_Telefono { get; set; } 
     public object DLR_Email { get; set; } 
     public int DLR_Abilitato { get; set; } 
     public object DLR_Time_Zone { get; set; } 
     public object DLR_Country { get; set; } 
     public string DLR_Culture { get; set; } 
     public object DLR_Email1 { get; set; } 
     public object DLR_MCC_Modello_Alias { get; set; } 
     public object DLR_Anagrafica { get; set; } 
     public object DLR_Firma { get; set; } 
     public bool IsFIMAP { get; set; } 
     public bool IsSTANDARD { get; set; } 
     public bool IsDealerOrFimap { get; set; } 
     public object DLR_Tipo_Esteso { get; set; } 
     public object DLR_Abilitato_Esteso { get; set; } 
    } 

IndexOf JSON из StreamReader, из кода:

[{"DLR_Id":15,"DLR_Username":"dealer02","DLR_Password_Hash":"P4ssw0rd2","DLR_Nome":null,"DLR_Cognome":"Rossi2","DLR_Tipo":0,"DLR_Azienda":"AziendaRossi2","DLR_Telefono":null,"DLR_Email":null,"DLR_Abilitato":1,"DLR_Time_Zone":null,"DLR_Country":null,"DLR_Culture":"","DLR_Email1":null,"DLR_MCC_Modello_Alias":null,"DLR_Anagrafica":null,"DLR_Firma":null,"IsFIMAP":false,"IsSTANDARD":false,"IsDealerOrFimap":true,"DLR_Tipo_Esteso":null,"DLR_Abilitato_Esteso":null}] 

IndexOf от почтальона (правильный ответ), от API :

[{"DLR_Id":15,"DLR_Username":"dealer02","DLR_Password_Hash":"P4ssw0rd2","DLR_Nome":null,"DLR_Cognome":"Rossi2","DLR_Tipo":0,"DLR_Azienda":"AziendaRossi2","DLR_Telefono":null,"DLR_Email":null,"DLR_Abilitato":1,"DLR_Time_Zone":null,"DLR_Country":null,"DLR_Culture":"","DLR_Email1":null,"DLR_MCC_Modello_Alias":null,"DLR_Anagrafica":null,"DLR_Firma":null,"IsFIMAP":false,"IsSTANDARD":false,"IsDealerOrFimap":true,"DLR_Tipo_Esteso":null,"DLR_Abilitato_Esteso":null}] 

потерял этот параметр: IsDealerOrFimap

я испытал с http://json.parser.online.fr/ JSON и работает, преобразование является правильным, но из кода я потерял один параметр IsDealerOrFimap.

Список правильный riempieta me, но все элементы в списке не имеют параметра IsDealerOrFimap, теряет его ... почему?

К сожалению, мне нужны все параметры, кроме одного (IsDealerOfFimap), и не может понять, почему ... у кого-нибудь есть какое-либо решение?

enter image description here

решение я судимое формат андроид устройства и теперь работает правильно. мистерия!

+3

Что значит «потерял этот параметр», если он находится в обоих ответах? –

+0

, и он правильно десериализуется с кодом –

+0

Я имею в виду, что когда я конвертирую из json в список C#, я получаю все десериализованные объекты должным образом, но не заполняет параметр IsDealerOrFimap, так что отладка говорит мне несуществующий параметр. –

ответ

1

Если объект JSON содержит поля, которые нельзя сопоставить свойствам в целевом классе, эти поля молча игнорируются.

Класс, в котором вы десериализуете свой ответ в (Fimap.Models.DLR_User), просто не имеет свойства IsDealerOrFimap, из которого вы сериализуете класс (OBJ_User).

+0

Что вы говорите, IsDealerOrFimap находится в классе. –

+0

Нет, это не так. В противном случае IntelliSense покажет вам свойство. Класс, который вы десериализуете, отличается от класса, из которого вы сериализуетесь. – CodeCaster

+0

Класс, который я использую, имеет объект, на самом деле мой вопрос в том, что я проиграл ... почему я теряю параметр? –