如何基于KeyID键值对使用JQ合并两个JSON文件?
使用JQ按KeyID合并两个JSON文件
下面提供两种实用的合并方法,适配你的场景:
方法一:通用分组合并(支持多组KeyID)
如果你的JSON文件中可能包含多个不同KeyID的对象,这个方法可以自动按KeyID分组合并:
jq --slurp 'group_by(.KeyID)[] | add' file1.json file2.json
命令说明:
--slurp:将所有输入的JSON对象加载到一个数组中group_by(.KeyID):按KeyID字段对数组中的对象分组add:将每组内的对象合并,相同字段(此处仅KeyID)保留一致值,不同字段全部保留
方法二:单对象直接合并(仅适用于单个对象场景)
如果确定两个文件各只有一个JSON对象且KeyID匹配,可使用更简洁的命令:
jq -n 'input as $f1 | input as $f2 | $f1 + $f2' file1.json file2.json
命令说明:
-n:不自动读取输入,手动控制读取流程input as $f1:读取第一个文件内容存入变量$f1input as $f2:读取第二个文件内容存入变量$f2$f1 + $f2:合并两个对象,保留所有字段
合并后结果示例:
{ "KeyID": 7532173, "KeyDetails": "Level 12", "Level": "Access Level" }
内容的提问来源于stack exchange,提问作者dracinsshul
相关产品推荐
相关产品推荐

