taglib json从数组创建对象

时间:2012-11-15 15:57:23

标签: java json jsp taglib

我在jsp项目中使用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"
                }
            ]
        }
    ]
}

有人可以帮我用taglib json创建这个输出吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

这样做很少。

  1. prettyPrint="true"json:object设置json:array

  2. 将页面,请求,会话或应用程序属性atg.taglib.json.prettyPrint设置为true或false。

  3. 通过在web-app的web.xml文件中设置context-parm。

  4. 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()}" />