【发布时间】:2016-03-02 09:41:39
【问题描述】:
如果我使用 jackson-dataformat-xml 序列化 JsonNode 的 ArrayList,它会生成以下内容:
<ArrayList><item>...</item><item>...</item></ArrayList>
我想读一下:
<events><event>...</event><event>...</event></events>
我尝试使用自定义序列化程序,并确实给了我想要的 <event/> 标签,但它仍然将所有内容包装在 <ArrayList><item></item></ArrayList> 中
public class ArrayListSerializer extends JsonSerializer<ArrayList<JsonNode>> {
@Override
public void serialize(ArrayList<JsonNode> value, JsonGenerator gen,
SerializerProvider serializers)
throws IOException, JsonProcessingException {
gen.writeStartObject();
for (JsonNode node : value) {
gen.writeObjectField("event", node);
}
gen.writeEndObject();
}
@Override
public Class<ArrayList<JsonNode>> handledType() {
@SuppressWarnings("unchecked")
Class<ArrayList<JsonNode>> typeClass = (Class<ArrayList<JsonNode>>)(Class<?>)List.class;
return typeClass;
}
}
有什么建议吗?谢谢。
【问题讨论】:
-
你试过#writeObjectFieldStart("events") 方法吗?
-
是的,我收到一条错误消息 java.lang.RuntimeException: com.fasterxml.jackson.core.JsonGenerationException: Can not write a field name, expecting a value
标签: java xml serialization jackson jackson-dataformat-xml