繁体   English   中英

在确定的请求体中将对象序列化为json

[英]serialization of object to json in rest-assured request body

我正在使用resteasy做一个休息api,并且放心地测试它。

假设我有一个带有属性text的类message

@XmlRootElement
public class message {
  @XmlElement
  public String text;
}

以下测试将尝试将此对象发布到给定的URL:

message msg = new message();
msg.text = "some message";

expect()
  .statusCode(200)
.given()
   .contentType("application/json")
   .body(msg)
.when()
  .post("/message");

msg对象被序列化为json并发布,但不是按照我想要的方式 - 而不是以resteasy需要的方式,即。

发布了什么:

{ "text": "some message" }

什么工作:

{ "message": { "text": "some message" } }

有没有人知道如何按预期工作?

我知道已有答案,但我想分享我能够发送json对象的方式。 有人可能会发现它很有帮助

// import org.json.simple.JSONObject;
JSONObject person = new JSONObject();
person.put("firstname", "Jonathan");
person.put("lastname", "Morales");

JSONObject address = new JSONObject();
address.put("City", "Bogotá");
address.put("Street", "Some street");
person.put("address", address);

String jsonString = person.toJSONString();
// {"address":{"Street":"Some street","City":"Bogotá"},"lastname":"Morales","firstname":"Jonathan"}

// import static com.jayway.restassured.RestAssured.*;
given().contentType("application/json")
       .body(jsonString)
       .expect().statusCode(200)
       .when().post("http://your-rest-service/");

您可能正在使用内置的Jettison JSON序列化程序和RestEasy。 Jettison使用XML-> Json约定(也称为BadgerFish)。 将Jettison替换为Jackson或GSon以获得与RestAssured兼容的JSon格式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM