2013-05-08 82 views
-1

我有以下繼承傑克遜JSON:如果器具爲java.util.Set

interface ResultSet extends java.util.Set<CustomResult> { 
    public int getCount(); 
} 

@XmlAccessorType(XmlAccessType.NONE) 
@XmlType(name = "CustomResultSet") 
class CustomResultSet extends LinkedHashSet<CustomResult> implements ResultSet { 

    @XmlElement(name = "count") 
    private int count; 

    public void setCount(int count) { 
     this.count = count 
    } 

} 
. 
. 
public static void main() { 
ObjectMapper objectMapper = new ObjectMapper(); 
objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); 
objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); 
CustomResultSet customResultSet = new CustomResultSet(); 
CustomResult customResult = new CustomResult(55, "abc"); 
customResultSet.setCount(11); 
customResultSet.add(CustomResult); 
System.out.println(objectMapper.writeValueAsString(customResultSet)); 

} 

有了上面的代碼序列化在收集CustomResultSet值,但不會現場計數CustomResultSet不seralized子類領域。

+1

1)你的代碼不能編譯2)你沒有爲'CustomResultSet'的'count'屬性設置一個值,那麼你爲什麼期望輸出JSON呢? – Perception 2013-05-08 20:02:03

回答

1

任何實現了接口Set的接口都被視爲一個由Jackson設置的組件,即使您在自定義類上添加了註釋,也會產生JSON數組。你最好的辦法是爲你的班級準備一個自定義的序列化程序。