rest-assured支持映射Java对象到Json和XML以及从Json和XML中映射到Java对象。Json映射需要在classpath 中有Jackson、Jackson 2或者是Gson,XML映射需要在classpath 中有JAXB。
一、序列化
序列化:序列化Java对象到Json或Xml
假设我们有这样一个Java Object:
1 public class Message { 2 private String message; 3 4 public String getMessage() { 5 return message; 6 } 7 8 public void setMessage(String message) { 9 this.message = message; 10 } 11 }
我们想序列化这个对象为Json,并且将Json传递给request请求,这里有几种方法可以做到,比如说:
1.基于Content-Type的序列化
1 Message message = new Message(); 2 message.setMessage("My messagee"); 3 given(). 4 contentType("application/json"). 5 body(message). 6 when(). 7 post("/message");
在这个例子中,因为请求的content-type被设置为“application/json”,所以rest-assured将序列化这个message对象为Json。rest-assured首先会尝试从classpath中寻找Jackson,如果Jackson没有找到的话,则会使用Gson。如果你将content-type被设置为“application/xml”,rest-assured将使用JAXB,序列化这个message对象为XML。如果content-type没有定义,那么rest-assured将会按照下列顺序序列化对象:
1.使用Jackson 2将对象序列化为Json(Faster Jackson (databind),数据绑定的速度比Jackson快)
2.使用Jackson将对象序列化为Json(databind)
3.使用Gson将对象序列化为Json
4.使用JAXB将对象序列化为XML
同时rest-assured也关心content-type的字符集,比如:
1 Message message = new Message(); 2 message.setMessage("My messagee"); 3 given(). 4 contentType("application/json; charset=UTF-16"). 5 body(message). 6 when(). 7 post("/message");
你也可以将message对象序列化为表单参数:
1 Message message = new Message(); 2 message.setMessage("My messagee"); 3 given(). 4 contentType("application/json; charset=UTF-16"). 5 formParam("param1", message). 6 when(). 7 post("/message");
这个message对象将会序列化为字符集为UTF-16的Json(使用Jackson 或者 Gson ,如果存在的话)