2015-09-24 37 views
1

我正在使用Jackson庫。我有一些java對象,它們只是jsonNode的包裝器。所以想要將這些jsonNodes列表轉換爲單個jsonNode。我怎樣才能做到這一點。我試過這個如何將jsonNodes列表轉換爲單個jsonNode

public JsonNode converter(List<? extends Base> objList){ 
    List<String> jsonList=new ArrayList<String>(); 
    try 
    { 
    for (Base raObject : objList) { 
     ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter(); 
     String json = ow.writeValueAsString(raObject); 
     jsonList.add(json); 
    } 
    return JsonHelper.convert(jsonList); 
    }catch(Exception e) 
    { 
     System.out.println("Error occured while converting objectlist to jsonNode::"+e); 
     return null; 
    }  
} 

這是行不通的。還有其他方法嗎?

回答

1

如果您的每一個對象都可以序列化,那麼你也應該能夠序列化它們的列表將它們組合成一個JSON列表:

mapper.writeValueAsString(objList); // produces a JSON list: "[ obj1, obj2 ...]" 

您也可以要求傑克遜簡單地轉換objList到ArrayNode代替:

ArrayNode arrayNode = mapper.convertValue(objList, ArrayNode.class); 

但如果你真的有在基地的方法,允許轉換爲JsonNode,你可以簡單地建立自己ArrayNode:

ArrayNode arrayNode = mapper.getNodeFactory().arrayNode(); 
for (Base obj : objList) { 
    arrayNode.add(obj.toJsonNode()); 
} 

這將避免通過JSON表示進行往返。