2015-05-14 42 views
0

我有一個簡單的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

配置映射器不使用的getter如使用 MAPPER.configure制定者(MapperFeature.USE_GETTERS_AS_SETTERS,假);

解決了這個

0

嘗試使用@JsonIgnore標註在列表中的重複,因此沒有被序列化,它看起來是這樣的:

@JsonIgnore  
public ArrayList<String> getNames_r() { 
    return getNames(); 
} 

這應該在你的序列化JSON擺脫你的重複字段的。

希望它能幫助,

何塞·路易斯·

+0

我想字段被序列化,但是雖然反序列化我不想讀取它。 – Dilip

+0

https://github.com/FasterXML/jackson-databind/issues/95這是類似的,但由於我在舊版本,我試圖找出任何方式來獲得預期的輸出 – Dilip

+0

你在什麼版本?我知道從版本Jackson 1.9開始,您可以使用'@ JsonIgnore'和'@ JsonProperty'註釋來控制屬性的序列化和反序列化,正如我已經在這裏:http://stackoverflow.com/questions/30134298/asymmetric-serialization-and-deserialization - 使用 - 傑克遜/ 30147413#30147413。希望能幫助到你! – jbarrueta

相關問題