有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java taglib json从数组创建对象

我在jsp项目中使用json标记库。目前,我正在使用以下代码构建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) 个答案

  1. # 1 楼答案

    很少有办法做到这一点

    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的数组,该数组中只包含一个对象。该对象有两个属性,一个名为eng,值为Meat,另一个名为n1,值为Vlees

    只是好奇,不是吗

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

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