我有一个像这样的json字符串:
{
"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
}
我只想反序列化GuestValues数组。我创建了一个这样的类:
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; }
}
并称之为:
GuestValueResult guestValues = JsonConvert.DeserializeObject<GuestValueResult>(jsongString);
但它不起作用。我尝试了很多,一旦它以某种方式,它只返回jsonString中的第一个"A"
,"B"
,"C"
,"GuestValues"
上方的那个,我没有想要那组数据。我只想要那些"GuestValues"
内的人。请帮忙。
答案 0 :(得分:4)
我不知道你发布的代码如何返回任何有用的值,因为你有一个未映射的Results数组。
您需要创建另一个类
public class ResultsResult
{
public GuestValueResult[] Results { get; set; }
}
然后使用类
反序列化 ResultsResult guestValues = JsonConvert.DeserializeObject<ResultsResult>(jsongString);
然后你会得到你所期望的。
答案 1 :(得分:4)
您可以使用Linq to JSON(JSON.NET的一部分)来访问相关节点,然后对其进行反序列化:
var root = JObject.Parse(jsonString);
var guestValues = root["Results"][0]["GuestValues"].ToObject<GuestValue[]>();