2012-03-24 2 views
3

JAX-RS로 REST API를 빌드하고 있습니다.JAX-RS로 JSON 구문 분석

@XmlRootElement 
public class EventData{ 
    public long start; 
    public long end; 
    public Collection<Person> persons; 
} 

나는이 같은 방법이 있습니다 :

요소는 클래스 : 나는 JSON 요소를 소비 POST를 내가 EventData의 JSON 문자열을 게시 할 경우

@POST 
@Consumes({MediaType.APPLICATION_JSON}) 
public Response transactionRequest(EventData insert){ 
....} 

그것을 잘 작동하지만, 다음으로 전환하면 :

@POST 
@Consumes({MediaType.APPLICATION_JSON}) 
public Response transactionRequest(ArrayList<EventData> insert){ 
....} 

와 같은 JSON 문자열을 보냅니다.3210은 ArrayList 및 해당 EventData 개체를 만들지 만 EventData 개체 변수는 null입니다.

아무도 도와 줄 수 있습니까?

답변

1

EventData 클래스를 나타내는 JSON 객체로 구성된 JSON 배열을 보내야합니다.

당신이 제공 한 샘플은 그런 JSON 배열이 아니라 JSON 배열을 포함하는 'eventData'라는 단일 속성을 가진 JSON 객체입니다.

는 (당신의 EventData 클래스 기준) 같은 것을보십시오 :

JSON라는 유형의 개념이 없기 때문에 EventData 클래스의 언급이 없다는 것을
[ 
    { "start":1, "end":2, "persons":[] }, 
    { "start":3, "end":4, "persons":[] } 
] 

공지 사항 - 그냥 객체와 배열 것 사물; 객체의 속성 만 이름을가집니다.

+0

com.sun.jersey.json.impl.reader.JsonFormatException : "]"대신 콜론이 필요합니다. –

+0

내 답변의 JSON은 매우 거친 샘플이므로 List를 반환하는 JAX-RS 메서드의 출력을 사용하는 것이 좋습니다 일부 더미 항목이있는 'EventData' 클래스가 주어진 유효한 JSON을 몇 분 안에 작성해 보겠습니다. –

+0

유효한 JSON 샘플로 답변을 업데이트했습니다. –