Преобразуйте результаты базы данных в соответствии со схемой учетной записи, указанной в файле accounts-api.raml.

Я пытаюсь использовать визуальный сопоставитель dataweave для сопоставления имени (возврат из db) с именем и фамилией, для этого мне нужно разделить строку (имя), я использую функцию splitBy () для dataweave splitBy (String, String) : Массив, как вы можете видеть, возвращает массив строк, и я хочу просто приветствовать ввод образца ключа firstname: firstName: "hello world" splitBy ("") образец вывода: firstname: ["hello", "world"] ,

мой код:

%dw 2.0
output application/json

---
payload map ( payload01 , indexOfPayload01 ) -> {
    id: payload01.accountID default "",
    firstName: "payload01.name" splitBy(" "), 
    address: ((payload01.street default "") ++ (payload01.city default "")) ++ (payload01.state default ""),
    postal: payload01.postal default "",
    country: payload01.country default "",
    creationDate: payload01.creationDate as String default "",
    accountType: payload01.accountType default "",
    miles: payload01.miles default 0
}

update: я добился этого в dataweave, создав функцию userdefine, которая вызывает функцию splitBy (). В приведенном ниже коде я разбираю имя, возвращаемое из db, в имени и фамилии

%dw 2.0
output application/json
fun split(data) = data splitBy (" ")
---
payload map ( payload01 , indexOfPayload01 ) -> {
    id: payload01.accountID default "",
    address: ((payload01.street default "") ++ (payload01.city default "")) ++ (payload01.state default ""),
    postal: payload01.postal default "",
    country: payload01.country default "",
    creationDate: payload01.creationDate as String default "",
    accountType: payload01.accountType default "",
    firstName: split(payload01.name)[0],
    lastName: split(payload01.name)[1],
    miles: payload01.miles default 0
}

person mudassir ahmed    schedule 11.11.2019    source источник


Ответы (1)


Похоже, вам просто нужно выбрать первый элемент в результирующем массиве:

firstName : (payload01.name splitBy " ")[0]

person afelisatti    schedule 11.11.2019
comment
это решение не работает для меня, да, я могу получить к нему доступ с помощью индекса, но другая вещь - это splitBy - это функция, ожидающая строку в качестве аргумента, когда я передаю payload1.name, как это, она выдает ошибку, ожидающую строку, но получает null, чтобы удалить это, если Я передаю payload1.name так, как будто он воспринимает это буквально, я хочу, чтобы его значение анализировалось в имени и фамилии - person mudassir ahmed; 12.11.2019