2012-11-15 2 views
1

jsp 프로젝트에서 json taglib을 사용하고 있습니다. 현재이 코드 내 JSON 객체를 구축하고있다 :taglib json 배열에서 객체를 만듭니다.

<json:object prettyPrint="true"> 
    <json:array name="categories" var="cat" items="${categories}"> 
     <json:object> 
      <json:property name="id" value="${cat.getId()}" /> 
      <json:array name="languages" var="lang" items="${cat.getCategorieslanguageses()}"> 
       <json:object> 
        <json:property name="${lang.getLanguages().getShortname()}" value="${lang.getValue()}" /> 
       </json:object> 
      </json:array> 
     </json:object> 
    </json:array> 
</json:object> 

getCategorieslanguageses()를 반환 언어의 배열. 이 코드는 다음과 같은 출력을 제공합니다 :

{"categories": [ 
    { 
    "id": 3, 
    "languages": [ 
     {"nl": "Vlees"}, 
     {"eng": "Meat"} 
    ] 
    }, 
    { 
    "id": 2, 
    "languages": [ 
     {"eng": "Fish"}, 
     {"nl": "Vis"} 
    ] 
    } 
]} 

그래서,이 코드는 잘 작동하지만, 내가 선호하는 출력은 다음과 같습니다

{ 
    "categories": [ 
     { 
      "id": 2, 
      "languages": [ 
       { 
        "nl": "Vis", 
        "eng": "Fish" 
       } 
      ] 
     }, 
     { 
      "id": 3, 
      "languages": [ 
       { 
        "eng": "Meat", 
        "nl": "Vlees" 
       } 
      ] 
     } 
    ] 
} 

는 사람이 태그 라이브러리의 JSON이 출력을 생성하는 데 도움이 있을까요? 감사합니다.

답변

0

몇 가지 방법.

  1. json:object 또는 json:array마다에서 설정 prettyPrint="true".

  2. 페이지, 요청, 세션 또는 응용 프로그램 속성 atg.taglib.json.prettyPrint을 true 또는 false로 설정합니다.

  3. web-app의 web.xml 파일에 context-parm을 설정합니다.

http://json-taglib.sourceforge.net/tutorial.html

편집

는 : 처음에 난 당신이 출력 포맷 한 후 생각했다.

"languages": [ 
     {"eng": "Fish"}, 
     {"nl": "Vis"} 
    ] 

이의 해석은 languages라는 이름의 배열을 가지고 있고,이 배열은 두 개의 객체를 포함에, 첫 번째 개체 값 Fisheng라는 이름의 속성을 갖는다. 두 번째 개체의 이름은 n1이며 값은 Fish입니다.

"languages": [ 
       { 
        "eng": "Meat", 
        "nl": "Vlees" 
       } 
      ] 

이의 해석은 languages라는 이름의 배열을 가지고 있으며,이 배열에 단지 객체가 포함되어 있습니다. 객체에는 eng 값이 Meat이고 다른 하나는 n1 값이 Vlees 인 두 속성이 있습니다.

그냥 호기심,

<json:property name="${lang.getLanguages().getShortname()}" value="${lang.getValue()}" /> 

내가 원한 것이 아니다 그

<json:property name="${lang.getLanguages().getShortname()}" value="${lang.getLanguages().getValue()}" /> 
+0

이어야한다. 첫 번째 결과에서 언어는 각각 하나의 속성을 가진 서로 다른 개체입니다. 두 번째 결과에서 언어는 속성의 배열입니다. 두 번째 결과를 만들고 싶습니다. – Jerodev

+0

taglib json과 내가 제공 한 코드를 사용하여 두 번째 출력을 생성 할 수 있습니까? – Jerodev

+0

아니요, lang은 다른 언어의 문자열을 포함하며 getlanguages ​​()는 언어에 대한 모든 정보 (이름, 짧은 이름, ..)를 가져옵니다. – Jerodev

관련 문제