如何使用jq向嵌套在多层对象内的JSON数组添加新元素
正确的jq操作命令
方案1:固定下标写法(确认FieldValues第一个元素就是目标Groups项时使用)
jq '.FieldValues[0].Value += [{"Id": 642587, "Label": "S8"}]' current.json
如果需要直接修改原文件,加上-i参数即可:
jq -i '.FieldValues[0].Value += [{"Id": 642587, "Label": "S8"}]' current.json
方案2:通用筛选写法(适配FieldValues数组有多个元素、顺序不固定的场景)
通过select匹配FieldName为Groups的项再操作,不会受数组顺序影响:
jq '(.FieldValues[] | select(.FieldName == "Groups").Value) += [{"Id": 642587, "Label": "S8"}]' current.json
原错误写法问题说明
你之前的写法操作路径是根对象.,所以新增的Value数组直接挂载到了JSON最外层,没有命中嵌套在FieldValues下的目标Value数组,所以结构不符合要求。
内容的提问来源于stack exchange,提问作者Karl Hakkarainen
相关产品推荐
相关产品推荐

