json - 将速度响应转换为 JSON

标签 json struts2 velocity

我正在使用 struts 2 和 velocity 模板生成 JSON 响应。 现在要注意的是响应不是使用某些速度 JSON 插件生成的 它只是一个字符串,一旦 velocity 完成它的解析和渲染就会出现 响应,并在客户端执行 eval 以获取从字符串到 JSON 的响应。

我真正需要的是速度或支柱方面的一些解决方案,一旦结果是 由 velocity 生成,框架应该调用我的 API,我可以在其中使用我自己的逻辑将 vm 文件的响应输出转换为 JSON。如何实现这一目标?

例如:

  1. 在使用 JavaScript 的浏览器上,我设计了一个树形小部件,用于以树形结构显示评论。
  2. 假设用户点击评论按钮。
  3. 我的 UI 小部件将触发 AJAX 以获取评论数据。
  4. 此请求被 STRUTS 2 框架拦截。
  5. 它将调用,比方说,getComments() 操作 API,并将用评论对象(比如 cmt)填充 arrayList。
  6. 现在响应由速度模板 (*.vm) 处理。
  7. 现在在 vm 中我正在编写这样的代码:

    { "CommentsData" : [
    
        #set($sep="")
        #foreach($c in $cmt)
        $sep
        {
            "commentText" : $c.getText()
        }
        #set($sep=",")
        #end
    
    }
    
  8. 现在最终的响应可能是这样的:

    { "CommentsData" : [
    
        {
            "commentText" : "This is comment 1"
        },
        {
            "commentText" : "This is comment 2"
        },
        {
            "commentText" : "This is comment 3"
        },
        {
            "commentText" : "This is comment 4"
        }`
    
        ]
    }
    
  9. 现在这可能看起来像 JSON,但它不是严格的 JSON;我的意思是如果我错过 一些 , 然后在 JavaScript 客户端的某处,我的 eval 可能会失败或 JSON.parse() 会失败,但在 velocity 模板上,我现在知道 JSON 是否格式错误。

  10. 因此,一旦生成了上述速度模板,我就需要一些控制,我可以在其中编写一些 Java 代码来对响应进行一些验证。

我发现我使用速度模板生成 JSON 输出(实际上是一个看起来像 JSON 的字符串)的方法可能是错误的。但我仍然需要处理我编写的每个速度模板的响应。

最佳答案

不确定您如何使用速度。我们在输出 JSON 时不使用 velocity;我们只是创建一个 JSON 可转换对象并使用 response.write(jsonObject.toJson()) 直接从 Controller 输出它。这样,始终会生成正确的 JSON。

关于json - 将速度响应转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8815370/

相关文章:

objective-c - SBJSon 不喜欢 Json 字符串中的 [ ] 字符

javascript - 使用js删除localstorage中的json对象

javascript - Angular - 在 localStorage 中存储和读取带有状态的复选框列表

css - 在 struts2 中覆盖 css_xhtml

java - PDF 中的可滚动图像

javascript - Extjs 存储不适合 JSON

javascript - 如何将新值附加到输入

java - <逻辑:match> tag equivalent in Struts2

java - Spring 电子邮件和换行字符

java - 关于使用 GAE + Spring + Velocity 的任何问题