如何用jq将嵌套JSON的数组及对象转换为扁平化形式?
JSON结构扁平化处理方案
输入JSON
{"computers": [{"host":"example", "platform":"some_platform", "status": {"working":"yes", "display":["no"]}, "description":"" }] }
目标输出JSON
(注:修正了原目标的JSON语法错误,确保结构合法)
{"computers": { "host":"example", "platform":"some_platform", "working":"yes", "display":"no", "description":"" }}
处理命令(用jq工具)
直接执行下面的命令就能完成所有转换:
jq '.computers = .computers[0] | .computers += .computers.status | del(.computers.status) | .computers.display = .computers.display[0]' input.json
命令拆解
.computers = .computers[0]:去掉computers字段的数组包裹,直接取数组第一个对象作为该字段的值.computers += .computers.status:把status嵌套对象里的所有键值对合并到computers对象中del(.computers.status):删除computers里原有的status字段.computers.display = .computers.display[0]:将display的数组值转为单个元素值
内容的提问来源于stack exchange,提问作者vile_goat
相关产品推荐
相关产品推荐

