我在我的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 创建此输出?谢谢。
有几种方法可以做到这一点。
-
在每个
json:object
或json:array
设置prettyPrint="true"
。 -
通过将页面、请求、会话或应用程序属性
atg.taglib.json.prettyPrint
设置为 true 或 false。 -
通过在 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()}" />