杰克逊JSON:如果器具为java.util.Set
问题描述:
我有以下继承杰克逊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子类领域。
答
任何实现了接口Set
的接口都被视为一个由Jackson设置的组件,即使您在自定义类上添加了注释,也会产生JSON数组。你最好的办法是为你的班级准备一个自定义的序列化程序。
1)你的代码不能编译2)你没有为'CustomResultSet'的'count'属性设置一个值,那么你为什么期望输出JSON呢? – Perception 2013-05-08 20:02:03