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(或 Map)进行序列化/反序列化的额外步骤

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"}}

请注意,它JsonNode是不可变的,但ObjectNode如果您也想修改原始 JSON,也可以将其转换为。

于 2012-10-24T07:51:24.647 回答