如何将JsonNode转换为Map

问题描述 投票:0回答:1

在服务器上使用 play Framework java 我正在使用 graphiql 发出请求, 当我这样做时

final JsonNode variables = request().body().asJson().get("variables")
, 一个带有值的 JsonNode
"{\"id\":\"bar\"}"
,现在我想将这个JsonNode转换为Map, 我试过了

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 转换为地图?

java playframework jackson graphql
1个回答
0
投票

更改类型引用以使用

Map
接口而不是
HashMap
类。所以
new TypeReference<Map<String, Object>>

更新:
另外,您说您的 JSON 节点的值为

"{\"id\":\"bar\"}"
。这不是一个 JSON 对象,而是一个 JSON 字符串。确保你的整个对象看起来像这样:

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

而不是这样:

{
  "variables": "{\"id\":\"bar\"}",
  "otherFields": ...
}
© www.soinside.com 2019 - 2024. All rights reserved.