Yabin Song Yabin Song - 6 months ago 57
JSON Question

deserialize part of json string (array) in c#

I have a json string like this:

{
"Results":[
{
"attr1": "value1",
"attr2": "value2",
"A": "value_a",
"B": "value_b",
"C": "value_c",
"GuestValues":[
{
"A": "value_a",
"B": "value_b",
"C": "value_c"
},
{
"A": "value_a",
"B": "value_b",
"C": "value_c"
},
{
"A": "value_a",
"B": "value_b",
"C": "value_c"
}
}
],
"TotalResults":1,
"MilliSeconds":11
}


I want to deserialize only the GuestValues array. I created a class like this:

public class GuestValue
{
public string A;
public string B;
public string C;
}

public class GuestValueResult
{
public List<GuestValue> GuestValues { get; set; }
public in TotalResults { get; set; }
}


And call it like this:

GuestValueResult guestValues = JsonConvert.DeserializeObject<GuestValueResult>(jsongString);


But it doesn't work. I tried a lot, once somehow, it only gives me back the first
"A"
,
"B"
,
"C"
in the jsonString, the one above the
"GuestValues"
, I don't want that group of data. I only want those inside
"GuestValues"
. Please help.

Answer

You can use Linq to JSON (part of JSON.NET) to access the relevant node, then deserialize it:

var root = JObject.Parse(jsonString);
var guestValues = root["Results"][0]["GuestValues"].ToObject<GuestValue[]>();
Comments