我在JAVA中使用Jayway JsonPath 2.2版本。我对此几乎没有问题。
示例JSON:
{
"l5": [
{
"type": "type1",
"result": [
"res1"
]
},
{
"type": "type2",
"result": [
"r1"
]
}
]
}
我想在应用过滤器后获取字符串吗?
例如:
用于获取字符串的路径为l5[?(@.type == 'type2')].type
预期结果:type2
(字符串),但得到[" type2"](数组)
如果我做错了将其作为字符串获取,请更正路径吗?
应用过滤器后无法索引结果数组。我怎样才能实现同样的目标?
例如:
如果我使用路径l5[?(@.type == 'type2')][0]
,而不是将第一个JSONObject
返回给我,而是返回[]
是否可以使用jsonPath从字符串中提取子字符串?
像l5[0].type[0,2] => res
注意:我无法在JAVA中执行任何操作,因为我想保持库的通用性?
答案 0 :(得分:0)
jsonPath的返回值始终是一个数组,引自here。
因此,您正在尝试的操作1是不可能的,即永远不会返回字符串值 使用jayway jsonpath时,即使操作2和操作3看起来也不可行。
仅操作1和2的可能方式如下所示: -
String jsonpath="l5[?(@.type == 'type2')].type";
DocumentContext jsonContext = JsonPath.parse(jsonString);
List<String> typeDataList= jsonContext.read(jsonpath);
System.out.println(typeDataList.get(0)); //type2