1

以下の JSON 文字列で、"datastreams" 配列内の "at" および "current_value" プロパティの値にアクセスするにはどうすればよいですか?

この例では、データストリームは 1 つだけですが、実際には多数存在する可能性があります。「id」プロパティでデータストリームにアクセスする必要があります。この問題を解決したら、目的のデータストリームの ID に対して id == を指定した where 句を使用する予定です。

ここで説明したアプローチを使用してみましたが、「Windows 8 の JSON – A Simpler Approach」の下にありますが、機能していません。

このコードに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

[ ] でわかるように、 datastream は配列を返します。

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