使用jsonpath选择多个属性

4dbbbstv  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(100)

我有一个像这样的对象数组:

[
    {
        "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": "mail@myorganization.com",
        "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" : "mail@myorganization.com",
      "extern_uid": "user distinguished name"
   }
]


基于this answer,我在http://jsonpath.herokuapp.com/上使用Jayway JsonPath Evaluator成功地获得了id,name,username和email属性

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


但是我怎样才能得到不同等级的属性呢?extern_uid

mfuanj7w

mfuanj7w1#

我本来会把这个放在评论里的,但我想这个会更容易阅读。您可以解析答案,然后使用Stringify重新创建所需的JSON对象。我能够从这里提取出我用来得出这个的基本代码,https://stackoverflow.com/questions/33473571/how-to-extract-a-json-subset-from-main-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的东西,为什么不只是解析和创建自己的对象呢?

相关问题