0

I have a JSON like this and have to deserialize it:

{
  "0": {
    "foo_id":"xyz",
    "bar_id":"abc",
    "book": {
      "0": {
        "title":"hello",
        "author":"person_x"
      },
      "1": {
        "title":"hi",
        "author":"person_y"
      }
  },
  "1": {
    "foo_id":"xyz",
    "bar_id":"abc",
    "book": {
      "0": {
        "title":"hello",
        "author":"person_a"
      },
      "1": {
        "title":"bye",
        "author":"person_b"
      }
  },
  "random":"string",
  "other":"thing"
}

Similar to this question, except the answer given doesn't work, because I don't have the luxury of creating a class like this

public class RootObject
{
    public Dictionary<string, Object> Objects {get; set;}
}

If I do than the Objects field is null after deserialization.

Both the root object and book object are dynamic.

Any other approaches would be appreciated, Thanks in advance.

Community
  • 1
  • 1
qwerty123
  • 41
  • 1
  • 8

1 Answers1

3

Because the JSON you have does not contains a RootObject that holds a dictionary, you can deserialize straight into a Dictionary like so:

Class:

public class Item
{
    [JsonProperty("foo_id")]
    public string FooId { get; set; }

    [JsonProperty("bar_id")]
    public string BarId { get; set; }
}

Deserialize:

var result = JsonConvert.DeserializeObject<Dictionary<string, Item>>(json);

Result:

result


Update:

Since you have changed the original JSON in your question, the second given JSON can be deserialized as so:

Class:

public class RootObject
{
    [JsonExtensionData]
    public Dictionary<string, JToken> Items { get; set; }

    [JsonProperty("random")]
    public string Random { get; set; }

    [JsonProperty("other")]
    public string Other { get; set; }
}

Deserialize:

var result = JsonConvert.DeserializeObject<RootObject>(json);
Community
  • 1
  • 1
Jim
  • 2,974
  • 2
  • 19
  • 29
  • I still have a RootObject class, which is the one I would like to deserialize, because it has some other data I need. Thanks – qwerty123 Dec 08 '16 at 00:05
  • @querty123 it's important to know the whole structure of the complete JSON response in order to deserialize – Jim Dec 08 '16 at 05:58