web-dev-qa-db-ja.com

jsonpathで複数の属性を選択します

私はこのようなオブジェクトの配列を持っています:

[
    {
        "id": 192,
        "name": "Complete name",
        "username": "nsurname",
        "state": "active",
        "created_at": "2016-05-30T07:09:40.981Z",
        "organization": "",
        "last_sign_in_at": "2018-10-19T12:07:50.679Z",
        "confirmed_at": "2016-05-30T07:09:40.982Z",
        "last_activity_on": "2018-10-15",
        "email": "[email protected]",
        "current_sign_in_at": "2018-10-23T11:41:27.880Z",
        "identities": [
            {
                "provider": "ldapmain",
                "extern_uid": "user distinguished name"
            }
        ],
        "can_create_group": true,
        "can_create_project": false
    }
]

私が欲しいのは、属性のサブセットのみを抽出して、次のようなものを取得することです。

[
   {
      "id" : 192,
      "name" : "complete name",
      "username" : "uname",
      "email" : "[email protected]",
      "extern_uid": "user distinguished name"
   }
]

この回答 に基づいて、 http://jsonpath.herokuapp.com/ でJayway JsonPath Evaluatorを使用して、この式でID、名前、ユーザー名、および電子メール属性を正常に取得しました。

$..['id', 'name', 'username', 'email']

しかし、どうすれば異なるレベルの属性を取得できますか? extern_uid

5
mnieto

コメント欄に入れておけばよかったのですが、読みやすいと思いました。答えを解析してから、Stringifyを使用して必要なJSONオブジェクトを再作成することができます。これを思いついたベースコードをここから引き出すことができました メインJSONからJSONサブセットを抽出する方法

これが正確に機能するかどうかはわかりませんが、少なくとも解決策を見つけるためにあなたを正しい方向に向かわせることを望んでいました。

私の答え:

var parsed = JSON.parse(thisObjectYouLinked);//here you would put whatever JSON object you displayed

var newObject = JSON.stringify({
    $..['id', 'name', 'username', 'email']
    $.identies[*].['extern_uid']
});

JSONPathのものを理解しようとするのではなく、非常に長い話ですが、独自のオブジェクトを解析して作成してみませんか?

2
B. Cratty