首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jq的JSON对象嵌套数组中属性的扁平数组

使用jq的JSON对象嵌套数组中属性的扁平数组
EN

Stack Overflow用户
提问于 2018-11-21 16:20:53
回答 1查看 354关注 0票数 1

具有(简化的) Jira数据的JSON,如:

代码语言:javascript
复制
{
    "issues": [
        {
            "key": "TEST-A",
            "fields": { "issuelinks": [] }
        },
        {
            "key": "TEST-B",
            "fields": {
                "issuelinks": [
                    { "inwardIssue": { "key": "TEST-1" } },
                    { "outwardIssue": { "key": "TEST-2" } },
                    { "outwardIssue": { "key": "TEST-3" } }
                ]
            }
        }
    ]
}

想要得到如下的输出:

代码语言:javascript
复制
[
    { "key": "TEST-A", "inward": null, "outward": null },
    { "key": "TEST-B", "inward": ["TEST-1"], "outward": ["TEST-2", "TEST-3"] }
]

尝试(暂时忽略内部链接):

代码语言:javascript
复制
cat data.json | \
jq '.issues[] | {"key":.key, "outward":.fields.issuelinks[].outwardIssue.key }'

但我明白:

代码语言:javascript
复制
{ "key": "TEST-B", "outward": "TEST-1" }
{ "key": "TEST-B", "outward": "TEST-2" }
{ "key": "TEST-B", "outward": null }

注意:最后一个应该是TEST-A,前两个是TEST-2TEST-3,并且希望将TEST-2TEST-3组合在一个数组中。

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-21 19:58:10

让我们从您第一次尝试的变体开始:

代码语言:javascript
复制
.issues[]
 | {key,
   inward: .fields.issuelinks|map(.inwardIssue.key // empty),
   outward: .fields.issuelinks|map(.outwardIssue.key // empty) }

使用您的示例,这将生成:

代码语言:javascript
复制
{"key":"TEST-A","inward":[],"outward":[]}
{"key":"TEST-B","inward":["TEST-1"],"outward":["TEST-2","TEST-3"]}

因此,要达到规定的目标,需要进行两次修复:

  1. 生成一个数组(例如,将上面的表达式包装在方括号中)
  2. 将空数组替换为null。

(2)不确定,但易于实现,例如使用下面定义的辅助函数。

解决方案

代码语言:javascript
复制
def extract(f): map(f // empty) | if length ==0 then null else . end;

.issues
| map(
   {key,
    inward: .fields.issuelinks|extract(.inwardIssue.key),
    outward: .fields.issuelinks|extract(.outwardIssue.key)})

警告

如果extract应该保留nullfalse值,那么它的def应该进行相应的修改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53416372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档