2012-08-29 124 views
0

我需要将java数组对象转换为JSON,我为此使用了jackson。我只能认为,我必须从数组中迭代每个字段的名称,这意味着我必须为每个字段迭代相同的数组对象。有没有有效的方法来做到这一点?使用Jackson将Java Array对象转换为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()()); 
     } 

回答

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