You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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.b
    • del(.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:11:53