3

我正在使用resteasy制作一个 rest api ,并用rest-assured对其进行测试。

假设我有一个类 ,message有一个属性text

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

有没有人知道我如何才能按预期进行这项工作?

4

2 回答 2

6

我知道已经有了答案,但我想分享我能够发送 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/");
于 2013-11-20T15:13:46.443 回答
4

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

于 2012-05-24T14:10:19.357 回答