2012-11-15 258 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