2011-09-26 2 views
4

Aider à faire face à la déserialisation correcte de JSON. Par exemple, nous avons la réponse JSON à ce qui suit:Comment désérialiser une chaîne JSON est correcte dans C#?

{"variant":"otvet1", 
"source":"otvet2", 
"items":[ 
      {"list":"512"}, 
      {"vist":"315"}, 
      {"zist":"561"}]} 

Pour désérialiser en utilisant le code suivant:

[DataContract] 
    public partial class ItemsList 
    { 
     [DataMember(Name = "list")] 
     public string lisType { get; set; } 

     [DataMember(Name = "vist")] 
     public string vistType { get; set; } 

     [DataMember(Name = "zist")] 
     public string zistType { get; set; } 
    } 

    [DataContract] 
    public partial class SourceList 
    { 
     [DataMember(Name = "variant")] 
     public string variantType { get; set; } 

     [DataMember(Name = "source")] 
     public string vistType { get; set; } 

     [DataMember(Name = "items")] 
     public List <ItemsList> TestItemsList { get; set; } 
    } 

    public class JsonStringSerializer 
    { 
     public static T Deserialize<T>(string strData) where T : class 
     { 
      MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(strData)); 
      DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); 
      T tRet = (T)ser.ReadObject(ms); 
      ms.Close(); 
      return (tRet); 
     } 
    } 

    private static SourceList SourceTempList; 
    SourceTempList = JsonStringSerializer.Deserialize<SourceList>(e.Result); //in e.Result JSON response 

Dans le code précédent, cela fonctionne, mais si vous changez la réponse JSON, il ne fonctionne pas ... Nouvelle réponse JSON:

{"variant":"otvet1", 
"source":"otvet2", 
"items":[3, 
      {"list":"512"}, 
      {"vist":"315"}, 
      {"zist":"561"}]} 

dans ce cas, le code C# pour désérialisation ne fonctionne pas ... articles dans le numéro 3 est apparu, dites-moi comment désérialiser la réponse JSON à cela? Était disponible pour lister vist et zist ... Aidez-moi ... s'il vous plaît

+1

j'utilise toujours le logiciel newton json.net – pm100

Répondre

Questions connexes