2014-01-22 2 views
1

Jersey와 Jackson (JSON demarshalling 작업을하는 다른 방법이긴하지만)을 사용하여 내 시스템에이를 POJO 또는 다른 표현으로 표시하려고합니다.Jackson Jersey JSON

기본적으로 데이터 섹션 만 필요합니다. GenericTypes를 목록과 함께 사용하려고했지만 중첩 된 목록이므로 무엇을해야할지 모르겠습니다. 많은 도움을 요청하고 정말 고맙습니다!

{ 
    "total": 4, 
    "data": [ 
     { 
      "descriptor": "", 
      "multiInstance": false, 
      "active": false 
     }, 
     { 
      "descriptor": "Apparel", 
      "multiInstance": true, 
     }, 
     { 
      "descriptor": "abcd123", 
      "multiInstance": false, 

     }, 
     { 
      "descriptor": "abcd", 
      "multiInstance": false, 
     } 
    ] 
} 

이것은 사용하려는 클래스입니다. 수업 목록이 필요해.

public class customObject { 

@JsonProperty(value = "descriptor") 
private String descriptor; 
@JsonProperty(value = "multiInstance") 
private Boolean multiInstance; 

//getters and setters 
} 

편집 : 나는 여기에서 그것을 사용하고

.

CustomObjectResponse WDCOResponse = 자원 .type (MediaType.APPLICATION_JSON) .accept (MediaType.APPLICATION_JSON) .header ("권한", getToken())하세요 (WDCOResponse.class).;

하지만 여전히 작동하지 않습니다.

편집 2 : 알아 낸 것! 모두에게 감사 드려요. :)

무언가를 찾지 못했다면 주석을 추가해야만했습니다. 일부 JSON이 돌아 오지 않는 것은 모든 필드가 절대적으로 필요하다는 점에서 완전히 형성되지 않았습니다. 거기에서 데이터를

public class Response { 
    int count; 
    List<customObject> data; 
} 

및 액세스 :

+0

http://www.jsonschema2pojo.org/를 사용해 보셨습니까? – MariuszS

답변

1

는 경우 제공되는 개체가, 당신이 당신의 컨트롤러에 전달하는 것입니다 다음 것 다음과 같이 목록을 포함하는 하나 이상의 래퍼 객체가 필요합니다.

public class CustomRequest { 

    @JSonProperty(value = "total"); 
    private Integer total; 

    @JsonProperty(value = "data") 
    private List<CustomObject> data; 

    // getters/setters 

} 


public class CustomObject { 

    @JsonProperty(value = "descriptor") 
    private String descriptor; 

    @JsonProperty(value = "multiInstance") 
    private Boolean multiInstance; 

    // getters/setters 
} 

컨트롤러에 당신은 여전히 ​​오류를 받고있는 경우, 자세한 오류 또는 문제를 제공하십시오

@Controller 
public class JSONController { 

    @RequestMapping(value="sendData") 
     public @ResponseBody CustomResponse sendData(
      @RequestBody CustomRequest request) 
    { 
    return null; 
    } 

} 

다음 RequestBody가 CustomRequest 클래스입니다 것을 보여 표기법. 감사!

+0

그래서 다른 API에서 오는 JSON 정보를 실제로 포맷하려고합니다. 지금 클라이언트 API를 구축 중입니다. 나는 네가 가진 일을하고 있지만 일하지 않고있다. 나는 그냥 뛰어 내린다. 예외가 있다고 가정하고 있으므로 예외 캐처를 추가하여 인쇄 해 보겠습니다. –

0

당신은 같은 POJO를 사용하십시오

for (customObject ob : response.data) { 
    // process ig 
}