我有一个简单的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);
}
答案 0 :(得分:0)
尝试在列表的副本中使用@JsonIgnore
注释,以便它不会被序列化,它看起来像:
@JsonIgnore
public ArrayList<String> getNames_r() {
return getNames();
}
那应该摆脱序列化JSON中的重复字段。
希望它有所帮助,
何塞路易斯答案 1 :(得分:0)
将映射器配置为不使用getter作为setter MAPPER.configure(MapperFeature.USE_GETTERS_AS_SETTERS,false);
解决了这个问题