Java 当一些值已经被称为json字符串时,找到一种更好的方法使用jackson将映射转换为json

Java 当一些值已经被称为json字符串时,找到一种更好的方法使用jackson将映射转换为json,java,json,jackson,Java,Json,Jackson,我知道使用Jackson将Map转换为Json非常容易。但我想知道是否有更好的方法来解决我的处境。下面是我的代码 String jsonInfo = "{\"attr\":\"value\",\"attr2\",\"value2\"}"; ObjectMapper mapper = new ObjectMapper(); Map<String,Object> map = new HashMap<String,Object>(); map.put("name","dani

我知道使用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);
String jsonInfo=“{\“attr\”:\“value\”、\“attr2\”、\“value2\”}”;
ObjectMapper mapper=新的ObjectMapper();
Map Map=newhashmap();
地图。放置(“名称”、“丹尼尔”);
put(“info”,mapper.readValue(jsonInfo,newtypereference(){}));
字符串finalJsonString=mapper.writeValueAsString(map);

如您所见,即使我已经知道jsonInfo是一个json字符串。对于这一部分,我将其转换为一个映射,然后让Jackson再次将其转换为json。有没有更好的方法可以避免这种重复的工作?

您只需要使用Jackson将JSON解析到树结构中,然后在树结构中添加数据。这消除了对POJO(或映射)进行序列化/反序列化的额外步骤

您的
finalJson
将变成:

{“name”:“daniel”,“info”:{“attr”:“value”,“attr2”:“value2”}


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

当您知道字符串是JSON时,为什么要首先使用Jackson。然后将其转换为对象并转换为字符串?不要将其序列化为
映射
。只需从Jackson那里获取
JSONObject
,然后进行修改it@Nishant-他在
字符串
中有一些JSON,并想在其中添加
“name”:“daniel”
。手工操作相当乏味。@Nishant正如您可以看到我的代码一样,jsonInfo是我最终json的一部分。@Brian Roach我不太清楚您的意思。还有什么我可以遵循的提示吗?谢谢
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();