我有以下格式的json数据
{
"body": [
{
"username": "name1",
"id": "4444"
},
{
"username": "name2",
"id": "5555"
}
],
"meta": {
"input": "name1"
}}
鉴于此数据,我希望将"用户名" s与#34; meta.input"匹配。如果有匹配的返回/打印相关ID。
答案 0 :(得分:4)
jq 解决方案:
jq '.meta.input as $meta | .body[] | select(.username == $meta).id' input.json
输出:
"4444"
.meta.input as $meta
- 将.meta.input
键值分配给$meta
变量以进行进一步比较答案 1 :(得分:0)
这应该就是这样简单:
var data = {
"body": [{
"username": "name1",
"id": "4444"
}, {
"username": "name2",
"id": "5555"
}],
"meta": {
"input": "name1"
}
};
function getID(data) {
var username = data.meta.input;
var userID;
for (i in data.body) {
if (data.body[i].username === username) {
userID = data.body[i].id;
break;
}
}
return userID;
}
var id = getID(data);
alert(id);