【发布时间】:2018-01-25 08:33:11
【问题描述】:
有没有办法比较jq中的两个json文件?具体来说,如果对象出现在另一个 json 文件中,我希望能够从一个 json 文件中删除它们。基本上,从另一个文件中减去一个文件。如果我可以概括这一点,以便我可以定义对象的相等标准,那将是一个奖励,但这并不是绝对必要的,它可以严格基于对象相同。
所以更一般的情况是这样的。假设我有一个如下所示的文件:
[
{
"name": "Cynthia",
"surname": "Craig",
"isActive": true,
"balance": "$2,426.88"
},
{
"name": "Elise",
"surname": "Long",
"isActive": false,
"balance": "$1,892.72"
},
{
"name": "Hyde",
"surname": "Adkins",
"isActive": true,
"balance": "$1,769.34"
},
{
"name": "Matthews",
"surname": "Jefferson",
"isActive": true,
"balance": "$1,991.42"
},
{
"name": "Kris",
"surname": "Norris",
"isActive": false,
"balance": "$2,137.11"
}
]
我还有第二个文件,如下所示:
[
{
"name": "Cynthia",
"surname": "Craig"
},
{
"name": "Kris",
"surname": "Norris"
}
]
我想从第一个文件中删除 name 和 surname 字段与第二个文件的对象匹配的所有对象,因此结果应如下所示:
[
{
"name": "Elise",
"surname": "Long",
"isActive": false,
"balance": "$1,892.72"
},
{
"name": "Hyde",
"surname": "Adkins",
"isActive": true,
"balance": "$1,769.34"
},
{
"name": "Matthews",
"surname": "Jefferson",
"isActive": true,
"balance": "$1,991.42"
}
]
【问题讨论】:
-
可以,但具体视具体情况而定,请查看stackoverflow.com/help/mcve
-
在第二个文件的示例中,您需要删除
surname键 ("surname": "Norris",) 后的尾随,,因为在 JSON 中,与其他语言不同,最后一个键后的尾随逗号一个对象是不合法的。
标签: arrays json object jq subtraction