【发布时间】:2017-08-31 05:27:47
【问题描述】:
我有以下 json
{
"name" : "qwerty",
"values" :[
{
"field1" : [
"val1"
],
"field2" : [
"val2"
],
"name1" : [["a", "b"], ["c", "d"]]
},
{
"field1" : [
"val3"
],
"field2" : [
"val4"
],
"name1" : [["a", "b"], ["c", "d"]]
},
{
"field1" : [
"val5"
],
"field2" : [
"val6"
],
"name1" : [["a", "b"], ["c", "d"]]
}
]
}
我需要在bash中使用jq将上面的json改成下面的
{
"name" : "qwerty",
"values" :[
{
"field1" : "val1",
"field2" : "val2",
"new_name" : [["a", "b"], ["c", "d"]]
},
{
"field1" : "val3",
"field2" : "val4",
"new_name" : [["a", "b"], ["c", "d"]]
},
{
"field1" : "val5",
"field2" : "val6",
"new_name" : [["a", "b"], ["c", "d"]]
}
]
}
这里我面临以下问题:
我尝试用标记值解析内部 json 并将 '[' ']' 替换为空格,但是,当我尝试将“值”以列表的形式放入变量中时,jq 正在美化然后显示每个新行作为数组的一个元素。
values 数组中的内部 json 数量不固定。
请有人帮我制定要在 bash 中运行的 jq 语句以进行所需的更改。
【问题讨论】:
-
@fedorqui thnx 指出这一点,更正了问题
-
您知道要更改的具体是
.values[].field1和.values[].field2,还是应该折叠为单个值的任何单例列表? -
是的,“field1,field2,name”在每个 json 中都是固定的。但是json的数量不固定。
-
@vamsi 我已经编辑了我的答案,现在应该没问题
-
抱歉重新提出问题。我的要求有一个轻微的变化,我想知道如果我们没有固定字段的数量是否可以做到这一点。即“field1,field2,name”在每个json中也不是固定的。