如何用jq将JSON一级原子值统一包裹为数组?
用jq将JSON中非数组字段转为数组
需求是把JSON里所有顶层非数组类型的字段值包装成数组,已经是数组的字段保持不变。
原始JSON:
{ "a" : 23, "b" : "hi", "c": [90], "d": [{"j" : 80}] }
目标JSON:
{ "a" : [23], "b" : ["hi"], "c": [90], "d": [{"j" : 80}] }
实现命令
直接用这条jq命令就能完成转换:
jq 'with_entries(.value |= if type != "array" then [.] else . end)' input.json
命令说明
with_entries():遍历对象的每一组键值对,对每个键值对做处理后重新生成对象。.value |= ...:专门针对键值对里的value部分做修改。- 条件判断
if type != "array" then [.] else . end:检查值的类型,不是数组就把它包进数组里;要是已经是数组,就保持原内容不变。
内容的提问来源于stack exchange,提问作者HappyFace
相关产品推荐
相关产品推荐

