【问题标题】:How to use jsonpath in GSON如何在 GSON 中使用 jsonpath
【发布时间】:2017-08-06 09:15:25
【问题描述】:

我正在掌握 GSON for JAVA,并且有一个关于如何从我正在使用的大型 json 文档中进行类似 jsonpath 选择的问题。

例如使用 json 文档,例如:

{
  "environment": {
    "red": {
      "area": {
        "1": {
          "name": "foo"
        },
        "2": {
          "name": "bar"
        }
      }
    }
  }
}

jsonpath表达式:

   $.environment.red.area

返回:

 [
  {
    "1": {
      "name": "foo"
    },
    "2": {
      "name": "bar"
    }
  }
]

如何在 GSON 中实现这种选择?

我不清楚这个问题被标记为重复的问题的答案。似乎说它可以在 GSON 中完成,但没有说明或显示如何(据我所知)。

【问题讨论】:

  • 我不清楚这个问题被标记为重复的问题的答案。似乎说它可以在 GSON 中完成,但没有说明或显示如何(据我所知)。
  • 然后再读一遍。它包含一个示例以及相关文档的链接,展示了如何使用 Jackson 或 Gson 解析和映射 JSON。
  • @JBNizet 你真好。另一个问题包含一个无争议的响应,指出 GSON 不支持 jsonpath,然后继续谈论 Jayway。如果在该答案中有一个使用 GSON 执行 jsonpath 选择的明确示例,那么它会继续躲避我。
  • 如果你想使用 jsonpath 选择,GSON 不是你要找的。 GSON 是一个 JSON 映射器。但是 JsonPath 允许进行 JsonPath 选择。它可以使用 GSON 来解析和映射你的 JSON。

标签: java json gson jsonpath


【解决方案1】:

您可以使用下面的代码..

public static String getJsonStringForPath(String strJson, String strJPath)
    {
        Configuration JACKSON_JSON_NODE_CONFIGURATION = Configuration.builder().jsonProvider(new GsonJsonProvider())
                .options(Option.ALWAYS_RETURN_LIST, Option.SUPPRESS_EXCEPTIONS).build();

        Configuration conf = Configuration.builder().jsonProvider(new GsonJsonProvider())
                .options(Option.ALWAYS_RETURN_LIST, Option.SUPPRESS_EXCEPTIONS).build();

        JsonArray objArrJ = JsonPath.using(conf).parse(strJson).read(strJPath);     
        String strRetJson = ""+objArrJ;
        return strRetJson;
    }

//Pass the param of  JsonPath : "$.environment[*].red"

参考文档:jsonpath:https://github.com/json-path/JsonPath

【讨论】:

    猜你喜欢
    • 2016-03-10
    • 1970-01-01
    • 2022-01-02
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 2011-11-24
    • 2017-06-18
    相关资源
    最近更新 更多