2012-05-22 6 views
2

Я делаю отдых api с помощью resteasy и тестируя его с помощью rest-assured.Сериализация объекта json в запрошенном порядке запроса тела

Предположим, что у меня есть класс, 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"); 

Объект тзд сериализации в JSON и отправил, но не в том смысле, что я хочу - не в то есть необходимость повторного отдыха.

Что отвечал:

{ "text": "some message" } 

Что работает:

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

Кто-нибудь есть какие-либо понятия о том, как я могу сделать эту работу, как ожидалось?

+0

У меня есть 2 вопроса для вас: Откуда вы узнали, что было опубликовано? И Как вы применили решение, которое вы отметили в качестве ответа? Спасибо –

+0

Прошу прощения, но у меня больше нет кода для меня. Но если я правильно помню, все зависит от того, какие пакеты вы предоставляете. В нашем случае мы использовали maven. Найти то, что было опубликовано, не должно быть так сложно. Используйте прокси-сервер или журнал или что-то еще. – Vegar

ответ

4

Возможно, вы используете встроенный сериализатор Jettison JSON с функцией RestEasy. Jettison использует соглашение XML-> Json (также известное как BadgerFish). Замените Jettison на Jackson или GSon, чтобы получить формат JSon, совместимый с RestAssured.

5

Я знаю, что для этого уже есть ответ, но я хочу поделиться тем, как я смог отправить объект 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/"); 
+0

Все еще есть несколько сомнений, я создал Java hashmap, и это не удалось. Но ваше решение сработало, любая идея, почему он, возможно, не справился с использованием метода hashamp. Я вложил json в соответствии с вашим примером. – vikramvi

+0

Эй, викрамви, я сделал это давным-давно, и я не могу сказать, что происходит при использовании хэш-карты. –

 Смежные вопросы

  • Нет связанных вопросов^_^