如何在此JSON字符串中获取数组中的属性?

时间:2012-05-23 19:50:58

标签: c# .net json

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

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

我尝试使用“Windows 8中的JSON - 更简单的方法”中讨论的here方法,但它无效。

在此代码中,json包含从我正在调用的服务返回的JSON。 prop填充了JsonArraycurrent导致内部消息为“未找到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"
}

2 个答案:

答案 0 :(得分:0)

  

datastream = p.GetObject()。GetNamedString(“datastreams”)

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

答案 1 :(得分:0)

datastream返回一个数组,你可以注意到[]所以:

datetime = datastream[0].at
value = datastream[0].current_value