过滤后的JsonPath Fetch字符串

时间:2017-01-04 12:48:21

标签: java jsonpath

我在JAVA中使用Jayway JsonPath 2.2版本。我对此几乎没有问题。

示例JSON:

{ "l5": [ { "type": "type1", "result": [ "res1" ] }, { "type": "type2", "result": [ "r1" ] } ] }

  1. 我想在应用过滤器后获取字符串吗?

    例如:

    用于获取字符串的路径为l5[?(@.type == 'type2')].type 预期结果:type2(字符串),但得到[" type2"](数组)

    如果我做错了将其作为字符串获取,请更正路径吗?

  2. 应用过滤器后无法索引结果数组。我怎样才能实现同样的目标?

    例如:

    如果我使用路径l5[?(@.type == 'type2')][0],而不是将第一个JSONObject返回给我,而是返回[]

  3. 是否可以使用jsonPath从字符串中提取子字符串?

    l5[0].type[0,2] => res

  4. 之类的东西

    注意:我无法在JAVA中执行任何操作,因为我想保持库的通用性?

1 个答案:

答案 0 :(得分:0)

  

jsonPath的返回值始终是一个数组,引自here

因此,您正在尝试的操作1是不可能的,即永远不会返回字符串值 使用jayway jsonpath时,即使操作2和操作3看起来也不可行。

好读jayway Jsonpath

仅操作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