2

Jackson を使用して Map を Json に変換するのは非常に簡単です。しかし、私の状況により良い方法があるかどうか知りたいです。以下は私のコードです。

String jsonInfo = "{\"attr\":\"value\",\"attr2\",\"value2\"}";

ObjectMapper mapper = new ObjectMapper();
Map<String,Object> map = new HashMap<String,Object>();
map.put("name","daniel");
map.put("info",mapper.readValue(jsonInfo, new TypeReference<Map>(){}));

String finalJsonString = mapper.writeValueAsString(map);

ご覧のとおり、jsonInfo が json 文字列であることは既に知っています。この部分では、それをマップに変換し、最後に Jackson に再度 json に変換させます。このような重複した作業を回避できるより良い方法はありますか?

4

1 に答える 1

2

Jackson を使用して JSON を解析し、データを追加できるツリー構造にするだけです。これにより、POJO (またはマップ) へのシリアル化/逆シリアル化の余分な手順が不要になります。

String jsonInfo = "{\"attr\":\"value\",\"attr2\":\"value2\"}";
ObjectMapper mapper = new ObjectMapper();
JsonNode origNode = mapper.readTree(jsonInfo);

ObjectNode rootNode = mapper.createObjectNode();
rootNode.put("name", "daniel");
rootNode.put("info", origNode);

String finalJson = rootNode.toString();

あなたは次のfinalJsonようになります:

{"name":"daniel","info":{"attr":"value","attr2":"value2"}}

は不変ですが、元の JSON も変更したい場合はJsonNodeにキャストできることに注意してください。ObjectNode

于 2012-10-24T07:51:24.647 に答える