taglib json create object from array



我在我的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. 在每个json:objectjson:array设置prettyPrint="true"

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

  3. 通过在 Web 应用程序的 web.xml 文件中设置上下文参数。

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

编辑:起初我以为你是在格式化输出之后。

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

对此的解释是,你有一个名为 languages 的数组,并且在这个数组中包含两个对象,第一个对象具有一个名为 eng 的属性,值为 Fish 。第二个对象有一个名为 n1 的属性,值为 Fish

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

对此的解释是,你有一个名为 languages 的数组,并且在这个数组中只包含一个对象。该对象有两个属性,一个名为 engMeat,另一个名为 n1Vlees

只是好奇,不应该

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

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

最新更新