2012-05-22 2 views
2

resteasy을 사용하여 나머지 API를 만들고 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"); 

msg가 개체 내가 원하는 방식으로 JSON으로 직렬화 및 게시,하지만 방법 resteasy 필요, 즉.

무엇을 게시 것 :

{ "text": "some message" } 

무엇을 일하고 :

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

사람이 예상대로 내가이 일을 할 수있는 방법에 대한 단서가 있습니까?

+0

나는 두 가지 질문이 있습니다. 게시 된 내용을 어떻게 알았습니까? 그리고 답변으로 표시된 솔루션을 어떻게 적용 했습니까? 고맙습니다. –

+0

죄송합니다. 더 이상 사용할 수있는 코드가 없습니다. 그러나 내가 옳은 것을 기억한다면, 그것은 당신이 이용할 수있는 패키지로 귀착됩니다. 우리의 경우에는 maven을 사용했습니다. 게시 된 것을 찾는 것이 그렇게 어렵지 않아야합니다. 프록시 나 로그 등을 사용하십시오. – Vegar

답변

4

아마도 RestEasy가있는 내장 Jettison JSON 시리얼 라이저를 사용하고있을 것입니다. Jettison은 XML-> Json 규칙 (BadgerFish라고도 함)을 사용합니다. JSON 형식을 RestAssured와 호환되도록 Jettison을 Jackson 또는 GSon으로 바꾸십시오.

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

여전히 의문의 여지가 있지만 자바 해시 맵을 만들었으므로 실패했습니다. 그러나 당신의 솔루션은, 왜 hashamp 방식으로 실패했는지에 대한 아이디어를 가지고있었습니다. 귀하의 예에 따라 json을 중첩했습니다. – vikramvi

+0

안녕하세요 vikramvi, 전 오래 전에 해본 및 해시 맵을 사용할 때 실제로 무슨 일이 일어날 지 말할 수 없습니다. –