#json #jolt
#json #jolt
Вопрос:
Я пытаюсь преобразовать файл JSON во что-то, что позже можно преобразовать в csv или xml. Мой файл JSON выглядит следующим образом:
{
"meta": {
"contentType": "Response"
},
"content": {
"_type": "Response",
"data": {
"_type": "ObjectList",
"meta": {
"_type": "ObjectListMeta"
},
"DataObjects": [
{
"head": {
"fields": {
"id": {
"value": "24"
},
"name": {
"value": ""
}
}
},
"table": [
{
"number": 1,
"fields": {
"height": {
"value": 500,
"text": "500"
},
"average": {
"value": -2,
"text": "-2"
}
}
},
{
"number": 2,
"fields": {
"height": {
"value": 99999,
"text": "99999"
},
"average": {
"value": -5,
"text": "-5"
}
}
}
]
}
]
}
}
}
Я хочу, чтобы результат выглядел следующим образом:
[
{
"id": "24",
"name": "",
"height": 500,
"average": -2
},
{
"id": "24",
"name": "",
"height": 99999,
"average": -5
}
]
Я попробовал следующую спецификацию JOLT:
[
{
"operation": "shift",
"spec": {
"content": {
"data": {
"DataObjects": {
"*": {
"head": {
"fields": {
"id": {
"value": "[amp;4].id"
},
"name": {
"value": "[amp;4].name"
}
}
},
"table": {
"*": {
"fields": {
"height": {
"value": "[amp;5].height"
},
"average": {
"value": "[amp;5].average"
}
}
}
}
}
}
}
}
}
}
]
Но я получаю только следующий вывод:
[
{
"id": "24",
"name": "",
"height" : [ 500, 99999 ],
"average" : [ -2, -5 ]
}
]
Это не совсем то, что я хочу. Как мне изменить свою спецификацию, чтобы получить нужный мне результат?
Ответ №1:
Вы можете объединить эти атрибуты в списке таблиц как имеющие несколько соответствующих объектов для одного заголовка.объекты полей, такие как
[
{
"operation": "shift",
"spec": {
"content": {
"*": {
"DataObjects": {
"*": {
"table": {
"*": {
"@(2,head.fields.id.value)": "[amp;].id",
"@(2,head.fields.name.value)": "[amp;].name",
"@(0,fields.height.value)": "[amp;].height",
"@(0,fields.average.value)": "[amp;].average"
}
}
}
}
}
}
}
}
]