2013-05-08 73 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数组。你最好的办法是为你的班级准备一个自定义的序列化程序。