2013-10-05 1 views
3

J'utilise Json.Net aux données DeserializeObject Json en objet/collection (liste)JSON à un tableau JSON ne peut désérialiser l'objet JSON en cours

Je ne sais pas ce que je fais mal et je l'ai essayé :

List<LanguageObject> lang = JsonConvert.DeserializeObject<List<LanguageObject>>(jsonData); 

et essayé:

LanguageObject.Results lang = JsonConvert.DeserializeObject<LanguageObject.Results>(jsonData); 

Je reçois cette erreur:

Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1[LanguageObject]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly. 
To fix this error either change the JSON to a JSON array (e.g. [1,2,3]) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object. 
Path 'meta', line 1, position 8. 

ici mon JSON:

{"meta": 
{ 
    "status":200, 
    "message":[], 
    "resultSet": 
      {"id":"05"}, 
    "pagination":  
    { 
     "count":2, 
     "pageNum":1, 
     "pageSize":2, 
     "totalPages":1, 
     "sort":"ordinal", 
     "order":"Asc", 
     "currentUri":null, 
     "nextUri":null 
     } 
    }, 
    "results": 
    { 
     "id":0, 
     "name": 
     "Language", 
     "DName":null, 
     "qvalue":"language", 
     "language":null, 
     "mUsageCount":null, 
     "Ordinal":0, 
     "items": 
     [ 
      { 
      "id":0, 
      "name":"English", 
      "DName":"English", 
      "qvalue":null, 
      "language":null, 
      "mUsageCount":null, 
      "Ordinal":0, 
      "items":[] 
      }, 
      { 
      "id":0, 
       "name":"Spanish", 
       "DName":"Spanish;", 
       "qvalue":null, 
       "language":null, 
       "mUsageCount":null, 
       "Ordinal":0," 
       items":[] 
      } 
     ] 
    }} 

LanguageObject.cs

Public class LanguageObject 
    { 
    public class ResultSet 
    { 
     public string id { get; set; } 
    } 

    public class Pagination 
    { 
     public int count { get; set; } 
     public int pageNum { get; set; } 
     public int pageSize { get; set; } 
     public int totalPages { get; set; } 
     public string sort { get; set; } 
     public string order { get; set; } 
     public object currentUri { get; set; } 
     public object nextUri { get; set; } 
    } 

    public class Meta 
    { 
     public int status { get; set; } 
     public List<object> message { get; set; } 
     public ResultSet resultSet { get; set; } 
     public Pagination pagination { get; set; } 
    } 

    public class Item 
    { 
     public int id { get; set; } 
     public string name { get; set; } 
     public string DName { get; set; } 
     public object qvalue { get; set; } 
     public object language { get; set; } 
     public object mUsageCount { get; set; } 
     public int Ordinal { get; set; } 
     public List<object> items { get; set; } 
     public List<object> __invalid_name__ 
         items { get; set; } 
    } 

    public class Results 
    { 
     public int id { get; set; } 
     public string name { get; set; } 
     public object DName { get; set; } 
     public string qvalue { get; set; } 
     public object language { get; set; } 
     public object mUsageCount { get; set; } 
     public int Ordinal { get; set; } 
     public List<Item> items { get; set; } 
    } 

    public class RootObject 
    { 
     public Meta meta { get; set; } 
     public Results results { get; set; } 
    } 

} 

Répondre

5

Je ne vois pas une classe LanguageObject définie dans votre question. Cependant, je vois une classe RootObject. D'après ce que vous avez posté, vous devez désérialiser comme ceci:

RootObject root = JsonConvert.DeserializeObject<RootObject>(jsonData); 

Ensuite, vous pouvez obtenir le Results du RootObject:

Results lang = root.Results; 
+0

LanguageObject.cs est ma classe j'ai mis à jour ma question mais je vais donnez-moi un coup de feu et affichez mes résultats. –

Questions connexes