Пример ниже содержит тот же ключ «строка». Таких объектов могут быть тысячи. Мне нужно оптимальное решение для преобразования объекта ниже:
{
"row":{
"name": "abc"
},
"row":{
"school": "pqr"
}
}
Требуемый результат:
{
"rows":
[
{
"name": "abc"
},
{
"school": "pqr"
}
]
}
Оптимальный в смысле поиска менее дорогого решения. Потому что там будет около 7000 объектов и ключ для всех них как «строка».
Опять дорого в каком смысле? Конкретный показатель? Какой-то из ответов не соответствует критериям?
Ответы идеальны и отлично работают. Спасибо вам за это; Не могли бы вы указать мне тот, который будет меньше влиять на память и будет быстрее.
Нет. Я могу предположить, что это ответ с использованием селектора с несколькими значениями, потому что он использует только одну простую операцию, но на самом деле это подразумевает тестирование производительности в реальных условиях (т.е. аналогичные полезные нагрузки и аппаратное/программное обеспечение, которые вы ожидаете в производстве ), измеряя интересующие вас показатели и анализируя их.
Здесь groupBy поможет сгруппировать похожие ключи, а pluck преобразует объект в массив.
%dw 2.0
output application/json
---
(payload groupBy $$) mapObject (($$): ($ pluck $))
Вход
{
"row":{
"name": "abc"
},
"row":{
"school": "pqr"
}
}
Выход
[
{
"row": [
{
"name": "abc"
},
{
"school": "pqr"
}
]
}
]
Если вы хотите, чтобы строки были жестко закодированы, замените (($ pluck $$)[0]):($ pluck $)
на ("rows"):($ pluck $)
%dw 2.0
output application/json
---
(payload groupBy $$)pluck $ map{
(($ pluck $$)[0]):($ pluck $)
}
Просто используйте селектор с несколькими значениями, чтобы получить все ключи с одним и тем же ключом. имя:
https://docs.mulesoft.com/dataweave/2.4/dataweave-selectors
%dw 2.0
output application/json
---
rows: payload.*row
Это самое простое решение.
Он хорошо работает, если все имена ключей являются только строками @aled. В вопросе его приведенный ниже пример содержит «строку»
Этот ответ работает для условий вопроса. Если ключи могут быть разными, это следует упомянуть в вопросе.
Все объекты будут иметь одинаковый ключ, например. ряд в этом случае.
Что именно для вас "оптимально"? Вам нужно определить критерии для оценки ответов и решить, какой из них более оптимален.