0

我需要将 java 数组对象转换为 JSON,我为此使用杰克逊。我只能认为对于每个字段名称,我必须从数组中迭代,这意味着我必须为每个字段迭代相同的数组对象。有什么有效的方法吗?

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

1 回答 1

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();
}
于 2012-08-30T17:33:28.337 回答