2

Jackson ライブラリを使用しています。jsonNode のラッパーに過ぎない Java オブジェクトが多数あります。したがって、これらの 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;
    }       
}

これは機能していません。他の方法はありますか?

4

1 に答える 1

2

各オブジェクトをシリアル化できる場合は、それらのリストをシリアル化して json リストに結合することもできます。

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

また、代わりに objList を ArrayNode に単純に変換するように Jackson に依頼することもできます。

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

しかし、Base に JsonNode への変換を可能にするメソッドが実際にある場合は、単純に ArrayNode を自分で構築できます。

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

これにより、JSON 表現によるラウンドトリップが回避されます。

于 2015-09-24T13:58:20.193 に答える