反序列化一个列表导致重复
我有一个简单的pojo,我有一个字符串列表和默认get/set,我有另一个得到,所以在json我得到2个不同的字段 我的pojo和测试代码片段低于反序列化一个列表导致重复
public static class TestClass{ public ArrayList<String> names = null;
public ArrayList<String> getNames() {
if(null == names) names = new ArrayList<>();
return names;
}
public void setNames(ArrayList<String> names) {
this.names = names;
}
public ArrayList<String> getNames_r() {
return getNames();
}
@Override
public String toString() {
return "TestClass [names=" + names + "]";
}
}
@Test
public void testDeSerializationSimple() throws JsonParseException, JsonMappingException, IOException{
String justSchool = "{\"names\":[\"second\",\"one\",\"two\",\"three\"],\"names_r\":[\"second\",\"one\",\"two\",\"three\"]}";
ObjectMapper myDefaultMapper= new ObjectMapper();
myDefaultMapper.setDateFormat(CoreUtils.COMMON_SIMPLE_DATE_FORMAT)
.setTimeZone(TimeZone.getTimeZone("UTC"))
.enable(SerializationFeature.INDENT_OUTPUT)
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
TestClass testReadDummy = myDefaultMapper.readValue(justSchool, TestClass.class);
System.out.println(" mapper test read = "+testReadDummy);
//assertEquals(testRead.getListString().size(),4);
System.out.println("list = "+testReadDummy);
assertEquals(testReadDummy.names.size(), 4);
}
回答:
配置映射器不使用的getter如使用 MAPPER.configure制定者(MapperFeature.USE_GETTERS_AS_SETTERS,假);
解决了这个
回答:
尝试使用@JsonIgnore
标注在列表中的重复,因此没有被序列化,它看起来是这样的:
@JsonIgnore public ArrayList<String> getNames_r() {
return getNames();
}
这应该在你的序列化JSON摆脱你的重复字段的。
希望它能帮助,
何塞·路易斯·
以上是 反序列化一个列表导致重复 的全部内容, 来源链接: utcz.com/qa/266894.html