【发布时间】:2022-11-11 00:50:12
【问题描述】:
我想将整个 JSON 文件输出到一个新文件,但将 filter-values 的值作为字符串附加到每个 filter 数组中每个 description 的每个 parameters 数组中。
一些注意事项:
- 我只对
foo对象感兴趣 - 并非所有
foo对象都包含parameter数组 - 并非所有
parameter数组都包含过滤器对象
{
"empty": {},
"paths": {
"somepath": {
"foo": {
"parameters": [
{
"name": "page"
},
{
"name": "sort"
},
{
"name": "filter",
"description": "This is the `filter` param."
},
{
"name": "orderby",
"description": "This is the `orderby` param."
}
],
"filter-values": [
"1",
"2",
"3"
],
"orderby-values": [
"a",
"b",
"c"
]
},
"bar": {}
},
"anotherpath": {
"foo": {
"parameters": [
{
"name": "page"
},
{
"name": "filter",
"description": "This is the `filter` param."
}
],
"filter-values": [
"4",
"5",
"6"
]
}
},
"yetanotherpath": {
"foo": {
"parameters": [
{
"name": "page"
}
]
}
}
}
}
这是我最接近让它工作的:
(.paths[].foo."filter-values" // empty | join(", ")) as $filters
| (.paths[].foo.parameters // empty
| . []
| select(.name? == "filter")).description |= . + " Possible values are: " + $filters
预期输出:
{
"empty": {},
"paths": {
"somepath": {
"foo": {
"parameters": [
{
"name": "page"
},
{
"name": "sort"
},
{
"name": "filter",
"description": "This is the `filter` param. Possible values are: 1, 2, 3"
},
{
"name": "orderby",
"description": "This is the `orderby` param."
}
],
"filter-values": [
"1",
"2",
"3"
],
"orderby-values": [
"a",
"b",
"c"
]
},
"bar": {}
},
"anotherpath": {
"foo": {
"parameters": [
{
"name": "page"
},
{
"name": "filter",
"description": "This is the `filter` param. Possible values are: 4, 5, 6"
}
],
"filter-values": [
"4",
"5",
"6"
]
}
},
"yetanotherpath": {
"foo": {
"parameters": [
{
"name": "page"
}
]
}
}
}
}
实际输出(整个文档产生了两次,在某些情况下,错误的filter-values 附加到description):
{
"empty": {},
"paths": {
"somepath": {
"foo": {
"parameters": [
{
"name": "page"
},
{
"name": "sort"
},
{
"name": "filter",
"description": "This is the `filter` param. Possible values are: 1, 2, 3"
},
{
"name": "orderby",
"description": "This is the `orderby` param."
}
],
"filter-values": [
"1",
"2",
"3"
],
"orderby-values": [
"a",
"b",
"c"
]
},
"bar": {}
},
"anotherpath": {
"foo": {
"parameters": [
{
"name": "page"
},
{
"name": "filter",
"description": "This is the `filter` param. Possible values are: 1, 2, 3"
}
],
"filter-values": [
"4",
"5",
"6"
]
}
},
"yetanotherpath": {
"foo": {
"parameters": [
{
"name": "page"
}
]
}
}
}
}
{
"empty": {},
"paths": {
"somepath": {
"foo": {
"parameters": [
{
"name": "page"
},
{
"name": "sort"
},
{
"name": "filter",
"description": "This is the `filter` param. Possible values are: 4, 5, 6"
},
{
"name": "orderby",
"description": "This is the `orderby` param."
}
],
"filter-values": [
"1",
"2",
"3"
],
"orderby-values": [
"a",
"b",
"c"
]
},
"bar": {}
},
"anotherpath": {
"foo": {
"parameters": [
{
"name": "page"
},
{
"name": "filter",
"description": "This is the `filter` param. Possible values are: 4, 5, 6"
}
],
"filter-values": [
"4",
"5",
"6"
]
}
},
"yetanotherpath": {
"foo": {
"parameters": [
{
"name": "page"
}
]
}
}
}
}
【问题讨论】:
标签: jq