使用Jackson将Java Array对象转换为JSON

时间:2012-08-29 23:51:31

标签: json jackson

我需要将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()());
        }

1 个答案:

答案 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();
}