【问题标题】:Return Java JsonPath as a json string将 Java JsonPath 作为 json 字符串返回
【发布时间】:2017-09-15 21:43:58
【问题描述】:

使用java json路径库:https://github.com/json-path/JsonPath

给定一个这样的 json

{
    "store": {
        "book": [
            {
                "category": "reference"
            },
            {
                "category": "fiction"
            }
        ],
        "bicycle": {
            "color": "red",
            "price": 19.95
        }
    },
    "expensive": 10
}

我想将“book”作为字符串列表返回。例如:

List<String> results = JsonPath.read(example, "$.store.book[*]");

结果应该是这样的:

["{\"category\":\"reference\"}", "{\"category\":\"fiction\"}"]

有没有办法做到这一点?

目前:

System.out.println(udf.jsonExtractScalar(testExample, "$.store.book[*]").getClass().getName());
--> net.minidev.json.JSONArray

【问题讨论】:

  • 有什么问题? JSONArrayList 的子类型,在这种情况下恰好包含字符串。
  • 由于 book 是 json 树中的 JsonArray,您可以 JsonArray tupe 并从中检索数据并将其添加到列表中。

标签: java json jsonpath


【解决方案1】:

由于 book 是 json 树中的 JsonArray,因此您可以使用 JsonArray 类型并从中检索数据并添加到列表中。

这是一个例子。

JSONArray jsonArray = new JSONArray(jsonArrayString);
List<String> list = new ArrayList<String>();
for (int i=0; i<jsonArray.length(); i++) {
list.add( jsonArray.getString(i) );

将 jsonArrayString 替换为您的 jsondata 的 books 数组名称,就可以了。

使用的类是 JSONArray 类

 `org.json.JSONArray` 

【讨论】:

  • 那是哪个JSONArray 类?
  • 这将是机器人自己的类。
  • 请将其添加到您的答案中,并解释为什么他们应该使用它而不是他们已有的东西,即。 Jayway 的 JsonPathnet.minidev.json.JSONArray
  • 它是org.json.JSONArray。当android中已经有可用的类时,为什么要使用第三方库?如果 android 类不能满足您的需求,那么可以使用另一个库来满足您的要求。
  • 更新了答案
猜你喜欢
  • 1970-01-01
  • 2013-10-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-23
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 2015-10-24
相关资源
最近更新 更多