Я пытаюсь преобразовать json в другой, используя библиотеку Jolt, и не получаю желаемого результата.
Вот мой входной файл.
{
"maxResults": 150,
"total": 89,
"issues": [
{
"key": "1",
"fields": {
"fixVersions": [
{
"self": "FIX1-01",
"id": "11"
},
{
"self": "FIX1-02",
"id": "12"
}
]
}
},
{
"key": "2",
"fields": {
"fixVersions": [
{
"self": "FIX2-01",
"id": "21"
}
]
}
},
{
"key": "3",
"fields": {
"fixVersions": []
}
}
]
}
And this is the spec file I am using for transformation.
<pre>
[
{
"operation": "shift",
"spec": {
"issues": {
"*": {
"key": "[&1].id",
"fields": {
"fixVersions": {
"*": {
"self": "[&1].fixVersion.name"
}
}
}
}
}
}
}
]
И я я получаю этот вывод
[ {
"id" : "1",
"fixVersion" : {
"name" : [ "FIX1-01", "FIX2-01" ]
}
}, {
"fixVersion" : {
"name" : "FIX1-02"
},
"id" : "2"
}, {
"id" : "3"
} ]
Это неправильно. Что он делает, так это то, что он получает первое значение собственного поля каждой проблемы и заполняет его как массив в первых fixVersions вывода, а также получает второе значение поля self и заполняет его во второй fixVersions. Что я хочу сделать, так это сохранить структуру такой, какая она есть на входе, просто измените имя собственного поля следующим образом.
[ {
"id" : "1",
"fixVersion" : [
{
"name" : "FIX1-01"
},
{
"name" : "FIX1-02"
}
]
}, {
"fixVersion" : [
{
"name" : "FIX2-01"
}
],
"id" : "2"
}, {
"id" : "3"
} ]
Что я делаю не так?