Json 尽管在请求正文中找到元素值返回 null

Json element value returning null though found in request body

我正在尝试传递一些 json 数据

{  
   "name":"srk",
   "age":25,
   "interests":"programming"
}

通过 ajax 并将请求主体提取到播放控制器中,如下所示。

@BodyParser.Of(BodyParser.Json.class)
    public Result example(){
      JsonNode jsonNode = request().body().asJson();
      Logger.info("requestBody = "+ jsonNode);
    }

上面的记录器准确地打印了请求期间发送的请求负载 如下所示:

{"name": "srk", "age":25, "interests" : "programming"}

但是当我尝试打印年龄时,它们显示为空。

String age = jsonNode.findPath("age").textValue();
Logger.info("age= "+ age);

正在打印age= null

任何想法都会有所帮助。

您应该使用 jsonNode.get("age").asInt() 而不是 findPath

来获取值

由于我还不能发表评论,我正在以@DBug 的名义写一个正确的答案。 @srk,请选择正确答案并将问题标记为已解决=)

JSonNode .textValue() 方法似乎无法在内容类型之间自动转换。由于 age 是数字字段,因此 textValue() 实际上为空。有两种可能的解决方案:

您可以使用以下方法将节点内容检索为正确的类型:

jsonNode.findPath("age").asInt();

您可以使用以下任一方法将节点内容检索为字符串:

jsonNode.findPath("age").asText();
//or
jsonNode.findPath("age").toString();

我在这里寻找文档:com.fasterxml.jackson.databind.JsonNode

将 link 指向 textValue() 描述。

将 link 指向 asInt() 描述。

将 link 指向 asText() 描述。