Java JsonPath 数组长度
Java JsonPath length of array
我有一个 Json 这样的:
{
"hello": {
"hello": [
{
"wwrjgn": "aerg",
"aaa": "gggg",
"rfshs": {
"segse": "segsegs",
"xx": "rgwgwgw",
"x-e ": "eergye"
},
"egg": "sgsese",
"segess": "sgeses",
"segess": "segess"
},
{
"esges": "segesse",
"segesg": "ws",
"rddgdr": {
"rdrdrdg": “srgsesees"
},
"drr": 3600,
"esese": "uytk",
"wew": "699",
"eses": “qe4ty"
}
],
"how": www"
}
}
我执行以下操作:
Object document =
Configuration.defaultConfiguration().addOptions().jsonProvider()
.parse(ka.toJSONString());
int queries = JsonPath.read(document, "$..hello.length()");
System.out.println("THE LENGTH OF THE NUMBER OF QUERIES " + queries);
我得到:
nested exception is java.lang.ClassCastException: net.minidev.json.JSONArray
cannot be cast to java.base/java.lang.Integer] with root cause
java.lang.ClassCastException: net.minidev.json.JSONArray cannot be cast to
java.base/java.lang.Integer
在这里尝试:http://jsonpath.herokuapp.com/?path=$..hello.length()
我得到:
[
2,
2
]
这就是我需要的。
知道我做错了什么吗?
提前致谢。
这个...
JsonPath.read(document, "$..hello.length()")
... 会将其响应转换为 net.minidev.json.JSONArray
的实例,该实例无法转换为 int
。这解释了 ClassCastException
你看到的原因...
[
2,
2
]
...尝试在线评估器时,这是 JSONArray
实例的 toString()
return 那个字符串。
要在代码中获取 "THE LENGTH OF THE NUMBER OF QUERIES ",只需将 JsonPath 输出读取为 JSONArray
,然后获取该类型的大小属性。例如:
JSONArray read = JsonPath.read(document, "$..hello.length()");
// prints:
// THE LENGTH OF THE NUMBER OF QUERIES 2
System.out.println("THE LENGTH OF THE NUMBER OF QUERIES " + read.size());
您也可以 return 一个 List<Integer
,例如:
List<Integer> read = JsonPath.read(document, "$..hello.length()");
// prints:
// THE LENGTH OF THE NUMBER OF QUERIES 2
System.out.println("THE LENGTH OF THE NUMBER OF QUERIES " + read.size());
我有一个 Json 这样的:
{
"hello": {
"hello": [
{
"wwrjgn": "aerg",
"aaa": "gggg",
"rfshs": {
"segse": "segsegs",
"xx": "rgwgwgw",
"x-e ": "eergye"
},
"egg": "sgsese",
"segess": "sgeses",
"segess": "segess"
},
{
"esges": "segesse",
"segesg": "ws",
"rddgdr": {
"rdrdrdg": “srgsesees"
},
"drr": 3600,
"esese": "uytk",
"wew": "699",
"eses": “qe4ty"
}
],
"how": www"
}
}
我执行以下操作:
Object document =
Configuration.defaultConfiguration().addOptions().jsonProvider()
.parse(ka.toJSONString());
int queries = JsonPath.read(document, "$..hello.length()");
System.out.println("THE LENGTH OF THE NUMBER OF QUERIES " + queries);
我得到:
nested exception is java.lang.ClassCastException: net.minidev.json.JSONArray
cannot be cast to java.base/java.lang.Integer] with root cause
java.lang.ClassCastException: net.minidev.json.JSONArray cannot be cast to
java.base/java.lang.Integer
在这里尝试:http://jsonpath.herokuapp.com/?path=$..hello.length() 我得到:
[
2,
2
]
这就是我需要的。
知道我做错了什么吗? 提前致谢。
这个...
JsonPath.read(document, "$..hello.length()")
... 会将其响应转换为 net.minidev.json.JSONArray
的实例,该实例无法转换为 int
。这解释了 ClassCastException
你看到的原因...
[
2,
2
]
...尝试在线评估器时,这是 JSONArray
实例的 toString()
return 那个字符串。
要在代码中获取 "THE LENGTH OF THE NUMBER OF QUERIES ",只需将 JsonPath 输出读取为 JSONArray
,然后获取该类型的大小属性。例如:
JSONArray read = JsonPath.read(document, "$..hello.length()");
// prints:
// THE LENGTH OF THE NUMBER OF QUERIES 2
System.out.println("THE LENGTH OF THE NUMBER OF QUERIES " + read.size());
您也可以 return 一个 List<Integer
,例如:
List<Integer> read = JsonPath.read(document, "$..hello.length()");
// prints:
// THE LENGTH OF THE NUMBER OF QUERIES 2
System.out.println("THE LENGTH OF THE NUMBER OF QUERIES " + read.size());