web-dev-qa-db-ja.com

ジャクソン:POJOを直接treemodelにシリアル化する方法はありますか?

POJOを Jackson TreeModel に直接変換する方法を探しています。 POJO-to-JSON-Stringからの変換が存在し、TreeModel-to-JSON-Stringがサポートされていることを知っています—以上で、POJOからTreeModelへの変換を探しています。方法はありますか?

使用例は次のとおりです。

  • サーバー側テンプレート化は、MustacheのJava実装で行われます。これは、JacksonのTreeModelを使用します。
  • その後、クライアント側でTreeModelのスリムバージョンを必要とするため、最初にTreeModelをフィルター処理し、それをJSONにシリアル化してから、クライアント側に送信してさらに処理できるようにします。

これには、理想的には2つのシリアル化手順が含まれます。ただし、私の回避策では、現在3つ使用しています。これは次のとおりです。

map = // a map of  pojos with jackson annotations

//pojo >> JSON
StringWriter w = new StringWriter();    
objectmapper.writeValue(new JsonFactory().createJsonGenerator(w), map);
String json = w.toString();
w.close();

//JSON >> Treemodel
JsonNode tree = GenericJcrDTO.mapper.readTree(json);
//filter tree here

//treemodel >>JSON
StringWriter w = new StringWriter();
GenericJcrDTO.mapper.writeValue(new JsonFactory().createJsonGenerator(w), tree);
json = w.toString();
w.close();

誰でも?

33
Geert-Jan

私自身の質問に答えるには:

JsonNode node = objectMapper.valueToTree(map);
49
Geert-Jan