1. ホーム
  2. json

[解決済み] JSONPathで文字列によるフィルタリングを行うには?

2022-03-06 06:28:33

質問

Facebook APIから次のようなJSONレスポンスがあります。

{
  "data": [
     {
       "name": "Barack Obama", 
       "category": "Politician", 
       "id": "6815841748"
     }, 
     {
       "name": "Barack Obama's Dead Fly", 
       "category": "Public figure", 
       "id": "92943557739"
     }]
 }

これにJSONPathを適用して、カテゴリが"Politician"の結果のみを返したいのです。読んだところ、どうやらそうする必要があるようです。

$.data[?(@.category=='Politician')]

というのがありますが、それによると テストツール 私が見つけたのは、これはうまくいかないということです。私が見つけたのは 別の質問 は、"=="の代わりに "eq" を使うべきだと示唆していますが、これもうまくいきません。私はここで何を間違えているのでしょうか?

どうすればいいですか?

あなたのクエリは問題なく見えるし、あなたのデータとクエリは、以下の方法で動作します。 このJsonPath パーサーを使用します。また、より多くの述語の例については、そのページのサンプルクエリを参照してください。

使っているテストツールに不具合があるようです。の例でも、そのようなことはありません。 JsonPathサイト が正しくない結果を返しています。

などがあげられます。

{
    "store":
    {
        "book":
        [ 
            { "category": "reference",
              "author": "Nigel Rees",
              "title": "Sayings of the Century",
              "price": 8.95
            },
            { "category": "fiction",
              "author": "Evelyn Waugh",
              "title": "Sword of Honour",
              "price": 12.99
            },
            { "category": "fiction",
              "author": "Herman Melville",
              "title": "Moby Dick",
              "isbn": "0-553-21311-3",
              "price": 8.99
            },
            { "category": "fiction",
              "author": "J. R. R. Tolkien",
              "title": "The Lord of the Rings",
              "isbn": "0-395-19395-8",
              "price": 22.99
            }
        ],
        "bicycle":
        {
            "color": "red",
            "price": 19.95
        }
    }
}

そして、その表現。 $.store.book[?(@.length-1)].title のリストを返します。 すべて のタイトルが表示されます。