当前位置: 首页 > 面试题库 >

如何使用Java在JSON中搜索/查找

南门新荣
2023-03-14
问题内容

我有一个下面的JSON字符串,我想在JSON字符串中查找/搜索条件。

1)。查找存在的键数。2)。获取给定键的值(如果有数组)

{
"store": {
    "book": [
        {
            "category": "reference",
            "author": "Nigel Rees",
            "title": "Sayings of the Century",
            "price": 8.95
        },
        {
            "category": "fiction",
            "author": "Evelyn Waugh",
            "title": "Sword of Honour",
            "price": 12.99
        },
        {
            "category": "fiction",
            "author": "Herman Melville",
            "title": "Moby Dick",
            "isbn": "0-553-21311-3",
            "price": 8.99
        },
        {
            "category": "fiction",
            "author": "J. R. R. Tolkien",
            "title": "The Lord of the Rings",
            "isbn": "0-395-19395-8",
            "price": 22.99
        }
    ],
    "bicycle": {
        "color": "red",
        "price": 19.95
    }
},
 "expensive": 10
}

我正在寻找类似Groovy GPath语法的解决方案

  • store.book-此数组的大小。
  • store.book [*]。category-如何对数组中存在的键进行计时。
  • store.bicycle-如果发现它必须返回真实值

问题答案:

您还可以使用REST Assured提供的JsonPath项目。该JsonPath项目使用Groovy
GPath表达式。在Maven中,您可以像这样依赖它:

<dependency>
    <groupId>com.jayway.restassured</groupId>
    <artifactId>json-path</artifactId>
    <version>2.4.0</version>
</dependency>

例子:

要获取所有书籍类别的列表:

List<String> categories = JsonPath.from(json).get("store.book.category");

获取第一本书类别:

String category = JsonPath.from(json).get("store.book[0].category");

获取最后一本书的类别:

String category = JsonPath.from(json).get("store.book[-1].category");

获取价格在5到15之间的所有图书:

List<Map> books = JsonPath.from(json).get("store.book.findAll { book -> book.price >= 5 && book.price <= 15 }");

GPath非常强大,您可以在路径表达式中使用高阶函数和所有Groovy数据结构。



 类似资料:
  • null 我正在寻找一个解决方案,如Groovy GPath语法 store.book-此数组的大小。 store.book[*].category-如何计算数组中的键值。 store.bicycle-如果发现它必须返回true值

  • 问题内容: 我有一个关于在JSON中搜索特定信息的问题。例如,我有这个JSON文件: 我的问题是,如何通过名称查找特定的人并使用jQuery显示该人的年龄?例如,我想在JSON中搜索一个叫Peter的人,当我找到一个匹配项时,我想显示有关该匹配项的其他信息(在这种情况下,关于名为Peter的人),例如人的年龄。 问题答案: 根据此答案,您可以使用类似:

  • 问题内容: 我有一个JSON数组 我将如何搜索8097并获取内容? 问题答案: 使用该函数将JSON字符串转换为对象数组,然后遍历该数组直到找到所需的对象:

  • 问题内容: 我正在使用Hibernate 4和Lucene 3.6。我对构面计数有要求。根据我的要求,我有一个实体“产品”。实体“产品”具有某些属性,例如ID,颜色,品牌。 现在,我的要求是,我想以多维方式获取该实体的商品数,并获取红色(彩色)耐克(品牌)服装的数量。 所以举个例子。我的数据库中保存了以下产品实体。 id品牌颜色 1锐步红 2锐步黑 3锐步绿 4利红 5利黑 6利黑 现在,我希望我

  • 问题内容: 如何使用preg_match在数组中搜索? 例: 问题答案: 在这篇文章中,我将为您提供三种不同的方法来满足您的要求。 我实际上建议使用最后一个代码段,因为它最容易理解并且代码简洁。 如何查看数组中与我的正则表达式匹配的元素? 有专门用于此目的的功能。它将一个正则表达式作为第一个参数,并将一个数组作为第二个参数。 请参见以下示例: 输出 但是我只想获取指定组的值。怎么样? 与能解决清洁

  • 我想在Java中用标准API进行动态搜索。 在我写的代码中,我们需要用JSON编写url栏中的每个实体。我不想写“普拉卡”。 网址: 这里我们需要写出每个实体,即使我们只搜索一个实体。类型实体,它应该为空。 我的代码如下。假设有多个实体,我想做的是使用它想要搜索的单个实体进行搜索。正如你在照片中看到的,我不想写一个我不需要的实体。你能帮我做什么吗? 我在存储库中的代码 我的服务代码 我在控制器中的