2

次のサンプル JSON を考えると、常に順序がわかるとは限りません...

{
  "contacts": [
    {
      "id": 287997,
      "type": "P",
      "relationship": "Mother",
      "firstName": "Sara",
      "lastName": "Johnson"  
    },
    {
      "id": 300982,
      "type": "EC",
      "relationship": "Aunt",
      "firstName": "Janet",
      "lastName": "Smith"  
    },
    {
      "id": 287200,
      "type": "P",
      "relationship": "Father",
      "firstName": "William",
      "lastName": "Johnson"  
    },
    {
      "id": 287997,
      "type": "EC",
      "relationship": "Friend",
      "firstName": "Harold",
      "lastName": "Johnson"  
    }
  ]
}

タイプが「EC」の最初の連絡先を取得したいと考えています。以下は、すべての「EC」タイプの連絡先を正常に取得します...

$.contacts[?(@.type == 'EC')]

しかし、私は最初の EC 連絡先だけが欲しいです。私は試した...

$.contacts[?(@.type == 'EC')][0]

しかし、これはうまくいきませんでした。他のいくつかのバリエーションを試してみましたが、うまくいきませんでした。可能であれば、JSON-Path アプローチの外に出ることなくこれを達成できるようにしたいと考えています。

このような表現を組み合わせることができることを知っています...

$.contacts[?(@.type == 'EC' && @.firstName == 'Janet')]

しかし、「EC」表現に一致する最初の連絡先を取得する必要があります。したがって、'EC' 式が評価された後、フィルター処理された最初の連絡先を取得します。

私が得ることができるどんな助けにも感謝します! ありがとう!

4

1 に答える 1