0

次のJSONオブジェクトでキー「location」を含むオブジェクトを検索し、その人の「name」とその人のlocationの値を含む配列またはjsonオブジェクトを取得できるようにしたいと思います。

サンプルリターン:

var matchesFound = [{トムブレイディ、ニューヨーク}、{ドナルドスティーブン、ロサンゼルス}];

var fbData0 = {
   "data": [
      {
         "id": "X999_Y999",
         "location": "New York",
         "from": {
            "name": "Tom Brady", "id": "X12"
         },
         "message": "Looking forward to 2010!",
         "actions": [
            {
               "name": "Comment",
               "link": "http://www.facebook.com/X999/posts/Y999"
            },
            {
               "name": "Like",
               "link": "http://www.facebook.com/X999/posts/Y999"
            }
         ],
         "type": "status",
         "created_time": "2010-08-02T21:27:44+0000",
         "updated_time": "2010-08-02T21:27:44+0000"
      },
      {
         "id": "X998_Y998",
         "location": "Los Angeles",
         "from": {
            "name": "Donald Steven", "id": "X18"
         },
         "message": "Where's my contract?",
         "actions": [
            {
               "name": "Comment",
               "link": "http://www.facebook.com/X998/posts/Y998"
            },
            {
               "name": "Like",
               "link": "http://www.facebook.com/X998/posts/Y998"
            }
         ],
         "type": "status",
         "created_time": "2010-08-02T21:27:44+0000",
         "updated_time": "2010-08-02T21:27:44+0000"
      }
   ]
};
4

1 に答える 1

0

@vsiege - この JavaScript ライブラリ ( http://www.defiantjs.com/ ) を使用して、JSON 構造を検索できます。

var fbData0 = {
   ...
},
res = JSON.search( fbData0, '//*[./location and ./from/name]' ),
str = '';

for (var i=0; i<res.length; i++) {
    str += res[i].location +': '+ res[i].from.name +'<br/>';
}

document.getElementById('output').innerHTML = str;

これが実用的なフィドルです。
http://jsfiddle.net/hbi99/XhRLP/

DefiantJS はグローバル オブジェクト JSON をメソッド「search」で拡張し、XPath 式で JSON をクエリできるようにします (XPath は標準化されたクエリ言語です)。このメソッドは、一致する配列を返します (何も見つからない場合は空の配列)。

ここに JSON を貼り付けることで、XPath 式をテストできます:
http://www.defiantjs.com/#xpath_evaluator

于 2014-01-05T07:12:35.217 に答える