Я пытаюсь преобразовать JSON, используя JOLT. Этот JSON состоит из вложенных массивов, и я не могу получить правильное преобразование.
Это оригинальный JSON. Обратите внимание, что всегда будет один массив «результатов» с одним объектом. Этот объект всегда будет содержать один массив строк. Я хочу, чтобы поля из каждого элемента в массиве строк.
{
"results": [
{
"total_rows": 1390,
"offset": 0,
"rows": [
{
"id": "00407a53-5f45-11e9-8b9c-84cc507154b4",
"key": "weather",
"value": {
"_id": "00407a53-5f45-11e9-8b9c-84cc507154b4",
"_rev": "1-e996404ab9445c8ff753d45f61b5dc16",
"deviceType": "home-iot",
"deviceId": "12345",
"eventType": "weather",
"format": "json",
"timestamp": "2019-04-15T06:09:17.311Z",
"data": {
"temperature": 44,
"humidity": 75
}
}
},
{
"id": "00901ed4-5f44-11e9-94a1-84cc507154b4",
"key": "weather",
"value": {
"_id": "00901ed4-5f44-11e9-94a1-84cc507154b4",
"_rev": "1-519c4edaeb15ed2ca102d4aabe4a0339",
"deviceType": "home-iot",
"deviceId": "12345",
"eventType": "weather",
"format": "json",
"timestamp": "2019-04-15T06:02:08.337Z",
"data": {
"temperature": -7,
"humidity": 49
}
}
}
]
}
]
}
Это спецификация, которую я написал:
[
{
"operation": "shift",
"spec": {
"results": {
"*": {
"rows": {
"*": {
"value": {
"deviceId": "[&4].deviceId",
"deviceType": "[&4].deviceType",
"eventType": "[&4].eventType",
"timestamp": "[&4].timestamp",
"data": {
"*": "[&5].&"
}
}
}
}
}
}
}
}
]
Ожидаемый JSON:
[{
"deviceId": "12345",
"deviceType": "home-iot",
"eventType": "weather",
"timestamp": "2019-04-15T06:09:17.311Z",
"temperature": 44,
"humidity": 75
}, {
"deviceId": "12345",
"deviceType": "home-iot",
"eventType": "weather",
"timestamp": "2019-04-15T06:02:08.337Z",
"temperature": -7,
"humidity": 49
}]
Однако моя спецификация возвращает следующий вывод:
[ {
"deviceId" : [ "12345", "12345" ],
"deviceType" : [ "home-iot", "home-iot" ],
"eventType" : [ "weather", "weather" ],
"timestamp" : [ "2019-04-15T06:09:17.311Z", "2019-04-15T06:02:08.337Z" ],
"temperature" : [ 44, -7 ],
"humidity" : [ 75, 49 ]
} ]
Возможно, что-то не так с уровнями. Но я не могу понять это. Может кто-нибудь помочь, пожалуйста?