2013-07-17 3 views
1

개체 목록을 반환하는 JAVA REST 서비스가 있습니다. 각 객체는 이름, 설명, 코드를 포함합니다. 내가 응답 JSONREST - Json 응답을 축소하는 방법

{ 
    "objects": { 
     "count": 10000, 
     "list": [ 
      { 
       "name": "1", 
       "description": "foo", 
       "code": "foo", 
      }, 
      { 
       "name": "2", 
       "description": "bar", 
       "code": "bar", 
      }, 
      ...... (1.000 items) 
     ] 
    } 
} 

TO 작게를 할 :

내가 그것을 할 수있는 방법을
{ 
    "a": { 
     "b": 1000, 
     "c": "a:objects,b:count,c:mapping,d:list,e:name,f:description,g:code", 
     "d": [ 
      { 
       "e": "1", 
       "f": "foo", 
       "g": "foo", 
      }, 
      { 
       "e": "2", 
       "f": "bar", 
       "g": "bar", 
      }, 
      ...... (1.000 items) 
     ] 
    } 
} 

, 감사합니다.

+1

는 .NET에서 서비스 사용을 선호하는 경우? 자바? PHP? 이 질문에 대한 중요한 정보입니다. –

+0

죄송합니다, 내 서비스가 자바에 – DuyHung

+0

태그에 자바를 추가하십시오 – Timmerz

답변

1

우리가 어떤 특정 기술을 사용하고 있는지 알 수는 없지만. Spring이나 JaxRS와 같은 일종의 REST 라이브러리를 사용하고 있고 POJO를 JSON으로 직렬화한다는 가정을 할 것이다. 또한 모든 구성을 설정하고 해당 구성에 대해 작업한다는 가정을하고 그 설정을 사용하여 출력을 집중적으로 살펴 보겠습니다. 당신이 당신의 POJO 잭슨 같은 것을 사용하는 경우

, 당신은 당신의 클래스에 다음과 같은 주석을 추가 할 수 있습니다

public class MyResponseObject { 
    @JsonProperty("a") 
    private MyObject objects; 

    public MyObject getObjects() { return objects; } 
    public void setObjects(MyObject object) { this.objects = object; } 
} 

public class MyObject { 
    @JsonProperty("b") 
    private long count; 
    @JsonProperty("d") 
    private List<Item> list; 

    // getters/setters 
} 

public class Item { 
    @JsonProperty("e") 
    private Sting name; 
    @JsonProperty("f") 
    private String description; 
    @JsonProperty("g") 
    private String code; 

    // getters/setters 
} 

을 관해서는 그 각각의 의미에 매핑하려면/코드 열심히 할 수 매핑을 할 수 있지만 자동 검색 방법은 없다고 생각합니다. 메소드에 대한 JavaDoc에 매핑이 포함될 수도 있습니다. 또 다른 대안은 이것이 다른 서비스에 공개 된 API 인 경우 문서를 제공 할 수있을뿐만 아니라 API가 제공하는 POJO와 패키지 된 Jar도 제공 할 수 있다는 것입니다. 이렇게하면 jar 파일을 종속성으로 포함시켜 매핑 된 클래스에 포함시킬 수 있습니다.

올바른 방향으로 안내 할 수 있기를 바랍니다.

또한

, 당신은 잭슨을 사용하지 않지만, JAXB는 @XmlElement(name="a")

+0

Gson이 그렇게 할 수 있습니까? – BNK

+1

예, Gson은 또한 필드에'@SerializedName ("a") 주석을 달아 필드 이름을 변경하는 것을 지원합니다. –

관련 문제