2012-08-29 94 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(); 
}