将JsonNode对象转换为Map

vis*_*isc 41 java json jackson playframework-2.2

我有一个C#程序,它给我发送了一个json对象.我正在创建一个Java Play网站来捕获POST数据.我得到正确的数据作为JsonNode对象,但需要将其转换为Map.

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

这是我正确捕获JsonNode对象的位置:

public static Result index() {
    JsonNode json = request().body().asJson();
}
Run Code Online (Sandbox Code Playgroud)

现在我有了这个对象,我需要弄清楚如何将它转换为一个Map让我可以如此神奇的对象.稍后我会想要将其转换Map为要在响应中发送的json对象.

我一直在查看文档,但可用的方法不会作为解决方案尖叫.

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

mho*_*jde 103

到这里试图找到自己的答案.挖得更深一些,在这里找到了一点答案

基本上只是用来ObjectMapper为你转换价值:

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

  • 更正,顺便说一下是Map <String,Object>.值可以是String,Integer,.. (5认同)
  • 您可能希望编写Map &lt;String,Object&gt; result = mapper.convertValue(jsonNode,new TypeReference &lt;Map &lt;String,Object &gt;&gt;(){}); 以避免警告未选中从Map到Map &lt;String,Object&gt;的分配。 (4认同)