将JsonNode对象转换为Map

82

我有一个C#程序,会向我发送一个JSON对象。 我正在制作一个Java Play网站以捕获POST数据。 我将正确的数据作为JsonNode对象获取,但需要将其转换为Map

我正在使用com.fasterxml.jackson.databind.JsonNode

这是我正确捕获JsonNode对象的地方:

public static Result index() {
    JsonNode json = request().body().asJson();
}

现在我有了对象,需要想办法将其转换为 Map 类型,以便对其进行一些操作。稍后我会想将 Map 转换回 json 对象,并发送响应。

我一直在查阅文档,但提供的方法并不是解决方案。

这是我参考的特定 JsonNode 对象的文档: http://fasterxml.github.io/jackson-databind/javadoc/2.2.0/com/fasterxml/jackson/databind/JsonNode.html

1个回答

204

我自己尝试寻找答案,最终到这里来了。深挖一下,我发现了部分答案在这里

基本上只需要使用ObjectMapper帮你转换值:

ObjectMapper mapper = new ObjectMapper();
Map<String, Object> result = mapper.convertValue(jsonNode, new TypeReference<Map<String, Object>>(){});

5
顺便提一下,正确的写法是Map<String, Object>。该值可以是字符串、整数等。 - Espinosa
6
您可以尝试写成这样:使用Map<String, Object> result = mapper.convertValue(jsonNode, new TypeReference<Map<String, Object>>(){}); 可以避免从Map到Map<String, Object>的未经检查的赋值警告。 - LoBo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接