2012-03-06 13 views
2

これは問題の可能性がありますが、キー値のペアをループせずにjsonオブジェクトを選択する方法があるのだろうかと思います。私はe4xと同様のことをやったことがありますが、jsの構文をどうやって行うのかは分かりません。例えばキー値のペアに基づいてjsonオブジェクトを選択してください

var data = { "objects":[ 
       {"foo":"x","bar":"a"}, 
       {"foo":"y","bar":"b"} 
       ]} 

ので、代わりのあなたは、W/O ことにデータに対して、手動で反復処理を行うことができますが、いくつかのコードが(とにかくオブジェクトを反復処理する必要があります

var someObject = data.objects[where objects.foo == x] 
+0

のリテラル表記をオブジェクトという、JSONではありません。 –

+0

間違っています。 JSONはObject Literal表記法のサブセットであり、実際には値のペアの識別子を文字列のみにする必要があります。 – FlavorScape

答えて

3

を宣言するループのための、いくつかの方法むしろ大きなオブジェクトでは雷のスピードを期待していない)。

そのためのライブラリがあります:jsonpath

+0

私は図書館によっては嫌いです。いいえ純粋な方法、ええ?私はループしていると思います。 – FlavorScape

+0

それから自分で書きます。特にない。ああ、ここからfindByを取るかもしれません:http://travian.kirilloid.ru/js/array.js – kirilloid

+0

jsonQを参照してください! https://github.com/s-yadav/jsonQ/ – FlavorScape

0

この質問はjsonQ前に、2年前に頼まれました。 jsonQを使うと、ループ内にループの束を書くことなく、兄弟を見つけたり、木をたどるなどのコードを書くことができます。質問はネイティブJSでそれを見つける方法を欲しがっていましたが、私は2歳の質問がちょっと古臭く思っています。私は実際にjsonQのようなライブラリを探していました。醜いループを書くのを避けるためです(私は自分で作業することができました)。

0

検索していたところ、https://github.com/lloyd/JSONSelectが見つかりました。私はまだそれを試していないが、それは良い選択であるようだ。

0

質問は古いですが、この回答は誰かを助けるかもしれません。リストから項目を選択するには

は、Javascript フィルタ機能を使用することができます

var data = { "objects":[ 
        {"foo":"x","bar":"a"}, 
        {"foo":"y","bar":"b"} 
       ]} 

var someobject = filterObject('x'); 

function filterObject(fooValue) { 
    return data.objects.filter(function(item) { 
     return item.foo == fooValue; 
    } 
} 
関連する問題