rest-assured的对象映射(序列化和反序列化)

Posted lwjnicole

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rest-assured的对象映射(序列化和反序列化)相关的知识,希望对你有一定的参考价值。

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 ,如果存在的话)

以上是关于rest-assured的对象映射(序列化和反序列化)的主要内容,如果未能解决你的问题,请参考以下文章

无法反序列化当前的JSON对象,为啥

(JSON) 序列化和反序列化,这个是啥意思呀?

序列化和反序列化

序列化和反序列化

将对象序列化和反序列化

Java序列化和反序列化