1

在下面的 JSON 字符串中,如何访问“datastreams”数组中的“at”和“current_value”属性的值?

在此示例中,只有一个数据流,但实际上可能有很多。我需要通过“id”属性访问数据流。一旦我弄清楚这个问题,我计划使用带有 id == 的 where 子句到所需数据流的 id。

我尝试使用此处讨论的方法,在“Windows 8 中的 JSON – 一种更简单的方法”下,但它不起作用。

在此代码中,json包含从我正在调用的服务返回的 JSON。prop填充有JsonArray. current导致异常,内部消息为“未找到 JSON 值”

var json = JsonObject.Parse(responseBodyAsText);
var prop = json.GetNamedArray("datastreams");

var current = from p in prop
    select new
    {
       datastream = p.GetObject().GetNamedString("datastreams"),
       datetime = p.GetObject().GetNamedString("at"),
       value = p.GetObject().GetNamedString("current_value")
    };

这是 JSON 字符串:

{
   "title":"X",
   "status":"X",
   "creator":"X",
   "datastreams":
      [
         {
            "at":"x",
            "max_value":"X",
            "current_value":"X",
            "id":"X",
            "min_value":"X"
         }
      ],
   "location":{"exposure":"x","domain":"x","disposition":"x","lat":X,"lon":-X},
   "created":"X",
   "tags":["X"],
   "feed":"X",
   "private":"X",
   "id":X,
   "description":"X",
   "version":"X",
   "updated":"X"
}
4

2 回答 2

0

数据流 = p.GetObject().GetNamedString("数据流")

上面的代码应该返回一个对象数组。您需要遍历对象数组以检查每个对象的“at”和“current_value”属性的值。

于 2012-05-23T19:58:25.363 回答
0

数据流返回一个数组,正如您可以通过 [ ] 注意到的那样:

datetime = datastream[0].at
value = datastream[0].current_value
于 2012-05-23T20:04:58.670 回答