Я использую JSONPath, и этот модуль узла https://www.npmjs.com/package/jsonpath-object-transform преобразует объект JSON в другой выход. Это похоже на XML и XSLT. Проблема в том, когда я хочу сопоставить разные уровни исходных данных и отправить на плоский вывод.JSONPath преобразовывать и отображать разные уровни данных с одним выходом
Примеры:
var output = {
storeName: '$.store',
items: ['$.items',{
uniqueName: '$.name',
sku: '$.skus[*].num'
}]
};
var source = {
store:'my store',
items: [{
name: 'Hammer',
skus: [{
num: '12345qwert'
}]
}, {
name: 'Bike',
skus: [{
num: 'asdfghhj'
}, {
num: 'zxcvbn'
}]
}, {
name: 'Fork',
skus: [{
num: '0987dfgh'
}]
}]
};
Результатом этого является:
{
"storeName": "my store",
"items": [
{
"uniqueName": "Hammer",
"sku": "12345qwert"
},
{
"uniqueName": "Bike",
"sku": "asdfghhj"
},
{
"uniqueName": "Fork",
"sku": "0987dfgh"
}
]
}
Проблема с результатом является то, что она игнорирует второй элемент массива в Bike
OBJ. items[1].skus[1].num
. Я полагаю, что это произошло, потому что $.items
обозначение знает только 3 объекта в массиве элементов.
Мой ожидаемый результат был:
{
"storeName": "my store",
"items": [
{
"uniqueName": "Hammer",
"sku": "12345qwert"
},
{
"uniqueName": "Bike",
"sku": "asdfghhj"
},
{
"uniqueName": "Bike",
"sku": "zxcvbn"
},
{
"uniqueName": "Fork",
"sku": "0987dfgh"
}
]
}
Как я могу добиться этого результата с помощью JSONPath.
возможно дубликат [JsonPath/Джексон: как десериализации JSON массив один Объект ("\ [1,2,3 \]" -> экземпляр Vector3d)?] (Http://stackoverflow.com/questions/29471589/jsonpath-jackson-how-to-deserialize-json-array-to-a -Single объектно-1-2-3) –