如何将JSON元素移动到新的子层级?
解决方案:将JSON中的
b元素下移至e对象内 我来帮你搞定这个JSON结构调整的需求,用jq(专门处理JSON的命令行工具)就能轻松实现,具体方案如下:
核心思路
遍历x数组里的每个对象,检查其a字段下是否存在b元素:
- 如果存在:把
b的值转移到新创建的e对象里,同时删掉原b字段,保留a下的其他原有字段 - 如果不存在:保持原结构不动
具体jq命令
jq '.x[] |= (.a |= if has("b") then .e = {b: .b} | del(.b) else . end)' input.json
命令拆解说明
.x[] |=:遍历x数组的每一个元素,对元素执行修改操作.a |=:聚焦到每个元素内的a对象,对其进行调整if has("b") then ... else . end:条件判断逻辑.e = {b: .b}:新建e对象,并把原b的值赋值给e.bdel(.b):删除a对象下原来的b字段else . end:如果a里没有b字段,就保持a对象原样
测试示例
输入JSON(input.json):
{"x": [ { "a": { "b": [], "c": 42 } }, { "a": { "d": true } } ]}
运行命令后输出:
{"x": [{"a": {"c": 42, "e": {"b": []}}}, {"a": {"d": true}}]}
(注:JSON的键顺序不影响数据结构,若需要固定键的显示顺序,可以调整jq命令显式构造对象,但通常无需纠结这点)
内容的提问来源于stack exchange,提问作者Quintesse
相关产品推荐
相关产品推荐

