JsonPath的应用

前面文章有介绍过org.json的JSONObject,及com.fasterxml.jackson.core的ObjectMapper,今天来介绍rest assured的JsonPath。

三种json处理类的不同:

比较对象 所属包 区别
ObjectMapper com.fasterxml.jackson.core 可读Json,可写Json,可更新已经存在的Json
JSONObject org.json 可读Json,可写Json,不可更改已经存在的Json
JsonPath io.rest-assured 可读Json,不可写Json,不可更改已经存在的json

JsonPath

JsonPath用来解析Json格式的数据来获取其值,API 测试经常应用解析验证Json格式response body,详情参考官网JsonPath Class

JsonPath is an alternative to using XPath for easily getting values from a Object document. It follows the Groovy GPath syntax when getting an object from the document. You can regard it as an alternative to XPath for JSON

例如:下面Object文档

{
    
     "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
    }
  }
 }

To get a list of all book categories:

List<String> categories = with(Object).get("store.book.category");

Get the first book category:

String category = with(Object).get("store.book[0].category");

Get the last book category:

String category = with(Object).get("store.book[-1].category");

Groovy格式的解析:

Get all books with price between 5 and 15:

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

表达式中传参数,注意格式:

String name = System.console().readLine();
 List<Map> books = with(Object).get("store.book.findAll { book -> book.author == " + name + " }");

Instead use the param(java.lang.String, java.lang.Object) method like this:

 String name = System.console().readLine();
 List<Map> books = with(Object).param("name", name).get("store.book.findAll { book -> book.author == name }");

JsonPath常用方法:

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wumingxiaoyao/article/details/114445539