当前位置: 首页 > 知识库问答 >
问题:

使用jsonpath解析数组索引

诸葛亮
2023-03-14

我有一个JSON文件,里面有很多对象和数组以及数组中的对象。

我在JSON path-data . offer . travels[1]. routes中的routes对象中有一个源和目的地之间的路由列表。

在每个路由对象中都有一个名为支路的数组,其长度可以是1、2或3。我编写了一个带有for循环的方法,在路由对象中循环并返回第一个只有1条支路的路由索引。但是它给出了一个错误。

为此编写了一个for循环。这是代码

public JSONObject PrepareProvBookingRequestBody() throws IOException, ParseException {

    File jsonExample = new File(System.getProperty("user.dir"),"\\JSONOutputFiles\\ThreeAdults_TwoCh_StdRet_PUB\\ThreeAdults_TwoCh_StdRet_PUB_JS.json");
    JsonPath jsonPath = new JsonPath(jsonExample);
    int routeindexOutbound=0;
    int routeindexInbound=0;
    List<Object> routesOutbound = jsonPath.getList("data.offer.travels[1].routes");
    int NoOfOutboundRoutes= routesOutbound.size();

    for (int i=0; i<NoOfOutboundRoutes; i++)
    {
        JsonArray legs = jsonPath.get("data.offer.travels[1].routes[i].legs");
        int NoOfLegs = legs.size();
        if (NoOfLegs==1) {
        routeindexOutbound=i;
        break;
     }

    }

String DepartureDate = jsonPath.getString("data.offer.travels[1].routes[routeindexOutbound].legs[0].service_schedule_date");

这是我得到的错误

java.lang.IllegalArgumentException: The parameter "i" was used but not 
defined. Define parameters using the JsonPath.params(...) function

有人能告诉我哪里出错了吗?

共有1个答案

姜森
2023-03-14

您需要使用 jsonPath.param(“i”,i)来定义参数...本文档包含更多示例

 类似资料:
  • 我使用jayway JsonPath库使用给定的路径解析JSON。如果我给出正确的路径,我就能得到字符串值。但是,如果路径是数组,我想在给出路径时得到贴图列表。例如,我有一个JSON,如下所示: 下面是我用来解析json的代码。 如果我给出路径,我正在获取字符串,但我需要地图列表。下面是我使用jsonpath解析Json的代码。 任何人建议适当的方法来得到我所期望的。

  • 我有一个json身体如下- 无论何时执行任何代码,我都要检查上面的“tx”、“,“origin”值在我生成的json中是否可用。而且,它应该是连续的,比如(tx.origin)。如果它可用,它将返回一些东西。我可以得到任何一个值-。令牌[?(@.value==“tx”)]。值我需要连续检查所有3个值。 你们能帮帮我吗?提前谢谢。

  • 我需要使用jsonpath解析例子1中的json,类似于下面的例子2。但找不到路径,因为json的类型是字符串。请建议我一些可能的方法来解析json字符串,以动态地修改colourCode的值。 例1: 例2: Jsonpath: 这将返回"iPhone"

  • 问题内容: 我正在与Json.Net解析数组。我正在尝试做的是将名称/值对从数组中拉出,并在解析JObject时将它们分配给特定的变量。 这是数组中的内容: 这是我在C#中获得的东西: 我是JSON和Json.Net的新手,因此它可能是其他人的基本解决方案。我基本上只需要在foreach循环中分配名称/值对,以便可以在前端输出数据。有人做过吗? 问题答案: 您可以这样获得数据值: 小提琴:http

  • 问题内容: 我有一个像这样的JSON文件: 在文件具有根元素之前,我将使用: 代码,但我不认为如何将类编码为根元素是一个数组。 我试过使用: 与: 但是还没有运气。使用这种方法我还能怎么读呢? PS我有这个工作使用: 但是我更想知道如何使用这两种方法(如果可能)。 问题答案: 问题是由放置在数组中的JSON对象(在 每种 情况下)的末尾逗号引起的: 如果删除它们,您的数据将成为 和 应该工作正常。

  • 附言:我用这个来工作: 但我更希望知道如何做到这一点(如果可能的话)与这两种方法。