使用 jq 提取多个字段并创建新对象

3

我有这个特定的JSON对象:

[
    {
        "userid" : "fe2e48b7-858b-4a0d-964a-efb8483a00c4",
        "lastupdateddate" : "84798000-13cd-11ea-8080-808080808080",
        "transactionid" : "10383117.2216238756",
        "accountid" : "10383117.10921962",
        "misctransactiondata" : null,
        "rawtransactiondata" : "{\"id\":\"1234567\",\"account_id\":\"456451962\"}",
        "source" : "gateway",
        "transactiondatajson" : "{\"version\":\"v1\",\"transactionId\":\"4234234.2216238756\",\"accountId\":\"345345345.10921962\"}",
        "version" : "v1"
    }
]

我希望将其转化为:

{
    "transactions": [
        {
            "version": "v1",
            "transactionId": "4234234.2216238756",
            "accountId": "345345345.10921962",
            "rawData": {
                "id": "1234567",
                "account_id": "456451962"
            }
        }
    ]
}

目前我有以下内容:

jq '{transactions: [.[0] | (.transactiondatajson|fromjson) ]}'

这段代码创建了一个对象数组的交易,但我不确定如何从 .rawtransactiondata 创建嵌套对象 rawData

使用 jq 最好的方法是如何附加对象?

1个回答

4

以下是其中一种可能性:

.[]
| {transactions: 
    [(.transactiondatajson|fromjson)
     + {rawData: (.rawtransactiondata|fromjson)} ] }

啊,原来是"+" 是关键啊。我一直加 ".+" 还是不行。谢谢。 - nixgadget

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接