0

Silverlight我在Windows Phone中发出网络请求。这就是回应。

{"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。我在做什么错?先感谢您。

4

3 回答 3

1
var obj = (JObject)JsonConvert.DeserializeObject(json);
foreach (var shift in obj["result"]["shifts"])
{
    Console.WriteLine((string)shift["description"]);
}
于 2012-10-01T14:16:55.913 回答
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 响应数据。但是 LB 的答案是否是您应用程序中的一次处理。

于 2012-10-01T14:31:39.587 回答
0

您缺少results根节点;这就是你应该如何使用它:

JArray sh = (JArray)obj["result"]["shifts"];

另外,请注意}上面的 JSON 示例末尾缺少一个!

于 2012-10-01T14:20:38.223 回答