java 使用Jackson(JsonNode)解析嵌套路径时遇到问题?

bakd9h0s  于 2022-12-21  发布在  Java
关注(0)|答案(1)|浏览(141)

尝试使用Jackson来解析JSON。很简单--我显然搞砸了一些基本的东西。

final JsonNode root = objectMapper.readTree(res.payload().asUtf8String());
JsonNode body = root.path("body");
JsonNode message = root.path("body").path("errorMessage");
logger.log(Level.INFO, body.asText());
logger.log(Level.INFO, message.asText());

预期结果:

INFO: {"errorMessage": "input is not a string"}
INFO: "input is not a string"

实际结果:

INFO: {"errorMessage": "input is not a string"}
INFO:
6rqinv9w

6rqinv9w1#

原来是因为我的嵌套值本身被转义了。
调试root给出了类似于以下形式的内容

{
  status: 400,
  headers: {...},
  body: "{\"errorMessage\":\"input is not a string\"}"
}

当时的策略是再次使用objectMapper

final JsonNode root = objectMapper.readTree(res.payload().asUtf8String());
// Body is, itself, escaped so we need to re-parse
JsonNode body = objectMapper.readTree(root.path("body").asText());

相关问题