【发布时间】:2017-01-26 04:39:33
【问题描述】:
我有一个对象数组,我在将其提交给控制器之前对其进行了转换。
要复制的Angular代码如下:
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: java.io.PushbackInputStream@302753d0; 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: java.io.PushbackInputStream@302753d0; line: 1, column: 1]
我的控制器方法签名是:
@RequestMapping(.., method=RequestMethod.POST)
public save(@RequestBody List<Object>, BindResult bindResult){}
【问题讨论】:
-
你为什么认为那是副本?
Object.assign改变了它的第一个参数。 -
我只想像 angular1 angular.copy 那样对对象进行深度复制。你能建议吗?
-
请将
SourceObject的代码添加到问题中 -
感谢您的帮助,从您的帖子中得到答案
标签: angular typescript