Использование jq для извлечения нескольких полей и создания нового объекта - PullRequest
1 голос
/ 14 января 2020

У меня есть этот конкретный 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) ]}'

, который создает массив транзакций объектов, однако я не совсем уверен, как создать вложенный объект rawData из .rawtransactiondata

Как лучше всего добавить объект с помощью jq?

1 Ответ

2 голосов
/ 14 января 2020

Одна из многих возможностей:

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