3

I'm using Json.Net to DeserializeObject Json data into object/collection (list)

I'm not sure what I'm doing wrong and I have tried this:

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

and tried this:

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

I'm getting this error:

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.

here my 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; }
    }

}

1 Answer 1

5

I don't see a LanguageObject class defined in your question. I do see a RootObject class, however. From what you have posted, you need to deserialize like this:

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

Then you can get the Results from the RootObject:

Results lang = root.Results;
Sign up to request clarification or add additional context in comments.

1 Comment

LanguageObject.cs is my class I have updated my question however I will give it a shot and post my results.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.