基于JsonPath和XmlPath的对象映射(Object Mapping)

rest-assured支持映射Java对象到Json和XML以及从Json和XML中映射到Java对象。Json映射需要在classpath 中有Jackson、Jackson 2或者是Gson,XML映射需要在classpath 中有JAXB。

1.JsonPath映射

例如:让我们来看一下我们想提取第一个winner到JavaBean对象中:

Json数据准备:

 1 {"lotto":{
 2     "lottoId":5,
 3     "winning-numbers":[2,45,34,23,7,5,3],
 4     "winners":[{
 5       "winnerId":23,
 6       "numbers":[2,45,34,23,3,5]
 7     },{
 8       "winnerId":54,
 9       "numbers":[52,3,12,11,18,22]
10     }]
11   }
12 }

JavaBean对象:

 1 public class Winner {
 2 
 3     private int winnerId;
 4     private List<integer> numbers;
 5 
 6     public int getWinnerId() {
 7         return winnerId;
 8     }
 9 
10     public void setWinnerId(int winnerId) {
11         this.winnerId = winnerId;
12     }
13 
14     public List<integer> getNumbers() {
15         return numbers;
16     }
17 
18     public void setNumbers(List<integer> numbers) {
19         this.numbers = numbers;
20     }
21 }

我们可以提取一个winner作为JavaBean:

1 Winner winner = from(LOTTO).getObject("lotto.winners[0]", Winner.class);

配置:

你可以通过配置自定义的对象映射、配置预定义的对象映射(已经存在的)、字符集等非常简单的配置JsonPath。你可以通过以下方式来配置JsonPath:

1 JsonPath jsonPath = new JsonPath(new File("/tmp/document.json")).
2                            using(new JsonPathConfig("ISO-8859-1"));
3 ..

当解析 /tmp/document.json文件的时候,就会通知JsonPath以content type=ISO-8859-1的字符集来展示数据

2.xmlPath对象映射:

通过使用xmlPath的JAXB,你可以很容易映射xml文件或者是部分xml文件到一个Java对象。

xml文件数据准备:

 1 <greetings>
 2    <greeting>
 3       <firstName>John</firstName>
 4       <lastName>Doe</lastName>
 5    </greeting>
 6     <greeting>
 7       <firstName>Jane</firstName>
 8       <lastName>Doe</lastName>
 9    </greeting>
10    <greeting>
11       <firstName>Some</firstName>
12       <lastName>One</lastName>
13    </greeting>
14 </greetings>

JavaBean对象准备:

 1 @XmlRootElement
 2 public class Greeting {
 3     private String firstName;
 4     private String lastName;
 5 
 6     public String getFirstName() {
 7         return firstName;
 8     }
 9 
10     public void setFirstName(String firstName) {
11         this.firstName = firstName;
12     }
13 
14     public String getLastName() {
15         return lastName;
16     }
17 
18     public void setLastName(String lastName) {
19         this.lastName = lastName;
20     }
21 }

映射xml文档中的第一个greeting到Greeting实例中:

1 Greeting greeting = from(greetingsXml).
2          getObject("greetings.greeting[0]", Greeting.class);

配置:

你可以通过配置自定义的对象映射、配置预定义的对象映射(已经存在的)、字符集等非常简单的配置xmlPath。你可以通过以下方式来配置xmlPath:

1 XmlPath xmlPath = new XmlPath(new File("/tmp/document.xml")).
2                         using(new XmlPathConfig("ISO-8859-1"));
3 ..
原文地址:https://www.cnblogs.com/lwjnicole/p/8270120.html