有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将JsonNode转换为映射

在服务器上使用play framework java我使用graphiql发出请求, 当我做final JsonNode variables = request().body().asJson().get("variables"), 具有值的JsonNode "{\"id\":\"bar\"}" ,现在我想把这个JsonNode转换成一个映射, 我试过了

Json.mapper().convertValue(variables, new TypeReference<HashMap<String, Object>>() {
        });

但我一直有例外

Caused by: com.fasterxml.jackson.databind.JsonMappingException: Can not instantiate value of type [map type; class java.util.HashMap, [simple type, class java.lang.String] -> [simple type, class java.lang.Object]] from String value ('{"id":"bar"}'); no single-String constructor/factory method at [Source: N/A; line: -1, column: -1]

我做错了什么?如何将JsonNode转换为映射


共 (1) 个答案

  1. # 1 楼答案

    更改类型引用以使用Map接口而不是HashMap类。所以{}

    更新:
    另外,您还说您的JSON节点具有值"{\"id\":\"bar\"}"。这不是JSON对象,而是JSON字符串。确保整个对象如下所示:

    {
      "variables": {
        "id":"bar"
      },
      "otherFields": ...
    }
    

    不是这样的:

    {
      "variables": "{\"id\":\"bar\"}",
      "otherFields": ...
    }