为什么会使 map value 的 list 元素重复?
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
public static void main(String[] args) throws Exception {
ObjectMapper jackson = new ObjectMapper();
Map<String, List<String>> map = new HashMap<>();
map.put("key", Arrays.asList("a", "b", "c"));
DataInfo dataInfo = new DataInfo(map);
// {"map":{"key":["a","b","c"]},"copyList":["a","b","c"]}
String json = jackson.writeValueAsString(dataInfo);
System.out.println(dataInfo.getMap().get("key").size()); // 3
DataInfo di = jackson.readValue(json, DataInfo.class);
System.out.println(di.getMap().get("key").size()); // 6
}
static class DataInfo {
private Map<String, List<String>> map;
public DataInfo() {
}
public DataInfo(Map<String, List<String>> map) {
this.map = map;
}
//@Transient
public List<String> getCopyList() {
return map.get("key");
//return new ArrayList<>(map.get("key"));
}
public Map<String, List<String>> getMap() {
return map;
}
public void setMap(Map<String, List<String>> map) {
this.map = map;
}
}
}