Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jsonpath选择多个属性_Json_Jsonpath - Fatal编程技术网

使用jsonpath选择多个属性

使用jsonpath选择多个属性,json,jsonpath,Json,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-19T

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

[
    {
        "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"
   }
]
基于,我使用Jayway JsonPath Evaluator在以下位置使用此表达式成功地获取了id、名称、用户名和电子邮件属性:


但是我怎样才能得到不同级别的属性呢?extern\u uid

我本来会把它放在评论中,但我认为这会更容易阅读。 您可以解析答案,然后使用Stringify重新创建所需的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的东西,为什么不直接解析并创建自己的对象呢?

这会不会起作用?$…['id','name','username','email'.['extern\u uid']。它返回一个空数组这不是一个答案,但我一直在看这个来获得一些帮助这是一个很好的起点。我最终基于JMESPATH规范使用.NET创建了一个小的命令行应用程序
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']
});