У меня есть массив объектов, который я преобразовываю перед отправкой его на контроллер.Объект назначает глубокое копирование причину проблемы
Угловая код для копирования следующим образом:
sourceObjArray: SourceObject[] = [..];
targetObjArray: SourceObject[]= [];
targetObjArray = object.assign(sourceObjArray);
// when i change target object it also cause source object to change
transformSourceObject(targetObjArray)
Ниже, кажется, работает:
targetObjArray = object.assign({}, sourceObjArray);
// when i call transform it does not effect source object :)
transformSourceObject(targetObjArray)
, но это вызывает следующую проблему.
Could not read document: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token at [Source: [email protected]; line: 1, column: 1]; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token at [Source: [email protected]; line: 1, column: 1]
Мой метод контроллера подписи:
@RequestMapping(.., method=RequestMethod.POST)
public save(@RequestBody List<Object>, BindResult bindResult){}
Почему вы думаете, что это копия ? ['Object.assign'] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) изменяет свой первый аргумент. – jonrsharpe
Я просто хочу сделать так, как в угловом1 угловом.копии, который глубоко скопирует объект. можете ли вы предложить? –
Пожалуйста, добавьте код для 'SourceObject' на вопрос –