我需要将java数组对象转换为JSON,我正在使用jackson。我只能认为,对于每个字段名称,我必须从数组迭代,这意味着我必须为每个字段迭代相同的数组对象。有没有有效的方法呢?
JsonGenerator jGenerator = jfactory.createJsonGenerator(out);
jGenerator.writeStartObject();
jGenerator.writeFieldName("images");
jGenerator.writeStartArray();
for(int i=0; i < topicBean.getTopicVOArray().length; i++){
jGenerator.writeString(topicBean.getTopicVOArray()[i].getBody());
}
for(int i=0; i < topicBean.getTopicVOArray().length; i++){
jGenerator.writeString(topicBean.getTopicVOArray()[i].getTopicGuid()());
}
答案 0 :(得分:0)
取决于您希望生成的json看起来如何。现在你将获得{"images":["bodystring","bodystring","guidstring","guidstring"]}
,但你也可以{"images":["bodystring","guidstring","bodystring","guidstring"]}
,或者更好,{"images":[{"body":"bodystring","guid":"guidstring"},{"body":"bodystring","guid":"guidstring"}]}
第一个解决方案:
for(int i=0; i < topicBean.getTopicVOArray().length; i++){
jGenerator.writeString(topicBean.getTopicVOArray()[i].getBody());
jGenerator.writeString(topicBean.getTopicVOArray()[i].getTopicGuid()());
}
第二个解决方案(对象包装器):
for(int i=0; i < topicBean.getTopicVOArray().length; i++){
jGenerator.writeStartObject();
jGenerator.writeFieldName("body");
jGenerator.writeString(topicBean.getTopicVOArray()[i].getBody());
jGenerator.writeFieldName("guid");
jGenerator.writeString(topicBean.getTopicVOArray()[i].getTopicGuid()());
jGenerator.writeEndObject();
}