2012-11-15 322 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. prettyPrint="true"在每一個json:objectjson:array

  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的數組,在這個數組包含兩個對象,第一個對象都有一個名爲eng的屬性,具有價值Fish。第二個對象具有名爲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