2

JavaScript で JSONPath を使用して値をフィルタリングする方法を知っています。

var o = {
  current_user_url: "https://api.github.com/user",
  other_user_url: "https://api.github.com/user",
  otherstuff: "stuff"
};
jsonPath(o, "$.[?(/https.*/.test(@))]") //returns ["https://api.github.com/user"]

しかし、キーをフィルタリングする方法は? キーが で終わるすべての値が返されるようにしたい*_url@JSONオブジェクトの値のみが含まれているように見えるため、次は機能しません。

jsonPath(o, "$.[?(/.*_url/.test(@))]")

JSONPath または JSONQuery でそれができない場合、使いやすくセットアップが簡単な別のライブラリはありますか? ユーザーにクエリ式を入力してもらいたいので、単純な JavaScript を評価するだけでなく、クエリ言語を使用することをお勧めします (これらの人のように)。

4

1 に答える 1

1

メソッド「search」でグローバル オブジェクト JSON を拡張する DefiantJS ( http://defiantjs.com ) を使用できます。このメソッドを使用すると、XPath 構文を使用して JSON 構造を検索でき、一致したものが配列のようなオブジェクトとして返されます。

var data = {
  current_user_url: "https://api.github.com/user",
  other_user_url: "https://api.github.com/user",
  otherstuff: "stuff"
},
found = JSON.search(data, "//*[substring(name(), string-length(name())-3) = '_url']"),
str = '';

for (var i=0; i<found.length; i++) {
    str += found[i] +'<br/>';
}

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

これを実際に確認するには、このフィドルをチェックしてください。http://jsfiddle.net/hbi99/92vCL/

于 2014-05-18T12:01:07.137 に答える