Мне нужно сделать сопоставление между 2 объектами JavaScript:
- Сущность, которая приходит ко мне из бэкэнд-сервиса (backend layer) (* 1)
- Сущность, которая используется в html-форме (внешний интерфейс)
(* 1) Внутренняя сущность происходит из службы Java REST.
К сожалению, сущность, которая приходит ко мне из моего бэкэнд-сервиса, имеет структуру, которой нельзя управлять из моей формы, поэтому мне нужно использовать другую сущность внешнего интерфейса, которой легко манипулировать в логике представления .
Это отображение должно служить в обоих направлениях, то есть:
- внешний интерфейс -> внутренний интерфейс
- бэкэнд -> внешний интерфейс
Эта HTML-форма обрабатывает довольно большую сущность со многими полями и разделами (переменными и объектами), поэтому это не тривиальное отображение.
В качестве простого примера:
Предположим, я получаю эту сущность из бэкэнда:
Сущность 1
{
"a": "aValue",
"b": "aValue",
"c": "aValue",
"d": {
"da": "aValue",
"db": "aValue",
"dc": "aValue",
}
}
И мне нужно обрести это так
Сущность 2
{
"x1": {
"a": "aValue",
"b": "aValue"
},
"x2": {
"c": "aValue"
},
"x3": {
"da": "aValue",
"db": "aValue",
"dc": "aValue"
}
}
Отображение между этими двумя jsons дается именами свойств.
Например: свойство «a» в первом json отображается на «x1.a» во втором json.
Итак, мой вопрос:
Есть ли хорошая практика для достижения этого в javascript?
РЕДАКТИРОВАТЬ:
Чтобы прояснить, что я ищу, мне нужно что-то вроде этого (но приятнее, а не боль в заднице, чтобы поддерживать себя, когда сущности большие):
function mapBackToFront(backendEntity) {
var myNewFrontEntity = {
x1: {
a: backendEntity.a,
b: backendEntity.b
},
x2: {
c: backendEntity.c
},
x3: {
da: backendEntity.da,
db: backendEntity.db,
dc: backendEntity.dc
}
}
};
return myNewFrontEntity;
}
function mapFrontToBackEntity(frontEntity) {
var myNewBackEntity =
{
"a": frontEntity.x1.a,
"b": frontEntity.x1.b,
"c": frontEntity.x2.c,
"d": {
"da": frontEntity.x3.da,
"db": frontEntity.x3.db,
"dc": frontEntity.x3.dc,
}
};
return myNewBackEntity
}