我在Silverlight
为Windows手机发出网络请求。这就是回应。
{"result": {
"account": null,
"checkInfo": null,
"command": null,
"shifts": [
{
"description": "17:45 - 17:55 work shift",
"id": 5459,
"venueId": 132
}]}}
我使用Newtonsoft.Json.dll
,我的目的是捕捉数组 - 移位。
JObject obj = JObject.Parse(StringShifts);
JArray sh = (JArray)obj["shifts"];
但每次sh
值为null
。我做错了什么?提前谢谢。
答案 0 :(得分:1)
var obj = (JObject)JsonConvert.DeserializeObject(json);
foreach (var shift in obj["result"]["shifts"])
{
Console.WriteLine((string)shift["description"]);
}
答案 1 :(得分:1)
另一种方法是:(如果您在项目中执行此类操作,这非常有用)
在项目中创建这些类
public class Shift
{
public string description { get; set; }
public int id { get; set; }
public int venueId { get; set; }
}
public class Result
{
public object account { get; set; }
public object checkInfo { get; set; }
public object command { get; set; }
public List<Shift> shifts { get; set; }
}
public class RootObject
{
public Result result { get; set; }
}
然后在你的代码中
var rootObject = JsonConvert.DeserializeObject<RootObject>(StringShifts);
foreach(var shift in rootObject.result.shifts)
{
Console.Write(shift.description);
}
通过这种方式,您可以更好地控制json响应数据。但是L.B的答案是否是你应用中的一次性过程。
答案 2 :(得分:0)
您缺少根results
节点;这就是你应该如何使用它:
JArray sh = (JArray)obj["result"]["shifts"];
此外,请注意上面的JSON示例末尾缺少}
!