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

我有一个下面的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数据结构。

以上是 如何使用Java在JSON中搜索/查找 的全部内容, 来源链接: utcz.com/qa/435216.html

回到顶部