我有一个像这样的对象数组:
[
{
"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,名称,用户名和电子邮件属性
$..['id', 'name', 'username', 'email']
但是如何获得不同级别的属性? extern_uid
答案 0 :(得分:2)
本来可以在评论中输入,但是我认为这将更易于阅读。 您可以解析答案,然后使用Stringify重新创建所需的JSON对象。我可以从这里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的内容,为什么不分析并创建自己的对象呢?