我正在使用struts 2和velocity模板来生成JSON响应。 现在捕获的是使用某个velocity JSON插件不生成响应 它只是一个String,一旦速度通过其解析和渲染完成就会出现 响应,并在客户端我做 eval 以获得从字符串到JSON的响应。
我真正需要的是对速度或支柱的一些解决方案,一旦结果如此 通过velocity生成,框架应该调用我的API,我可以使用自己的逻辑将vm文件的响应输出转换为JSON。怎么做到这一点?
例如:
getComments()
动作API并填充一个带有注释对象的arrayList,例如cmt。现在在vm中,我正在编写这样的代码:
{ "CommentsData" : [
#set($sep="")
#foreach($c in $cmt)
$sep
{
"commentText" : $c.getText()
}
#set($sep=",")
#end
}
现在最后的回复可能会像这样:
{ "CommentsData" : [
{
"commentText" : "This is comment 1"
},
{
"commentText" : "This is comment 2"
},
{
"commentText" : "This is comment 3"
},
{
"commentText" : "This is comment 4"
}`
]
}
现在这可能看起来像JSON,但它不是严格的JSON;我的意思是,如果我想念
某些,
某个地方然后在客户端使用JavaScript我的 eval 可能会失败或JSON.parse()
会失败,但在速度模板上我现在知道JSON是否格式错误。
因此,一旦生成了上述速度模板,我需要一些控制,我可以编写一些Java代码来对响应进行一些验证。
我看到我使用velocity模板生成JSON输出的方法(实际上是一个看起来像JSON的String)可能是错误的。但我仍然需要处理我写过的每个速度模板的响应。
答案 0 :(得分:1)
不确定如何使用力度。输出JSON时我们不使用velocity;我们只是创建一个JSON可转换对象,并使用response.write(jsonObject.toJson())
直接从控制器输出它。这样,始终生成适当的JSON。