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() 描述。
我正在尝试传递一些 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() 描述。