【问题标题】:Can GroovyTemplate, as a view technology of SpringMVC, create JSON?GroovyTemplate 作为 SpringMVC 的视图技术可以创建 JSON 吗?
【发布时间】:2018-05-30 00:17:23
【问题描述】:

我想将我的 java 数据类序列化为 JSON。老实说,我几天前发布了a relevant question,但是到目前为止我还没有得到答案。目前,所有答案都暗示了杰克逊的注释。但我不喜欢直接让类参与,我认为最好将这项工作委托给视图。

尽管如此,我发现 SpringMVC 支持 GroovyTemplate 并且我在处理 Groovy 模板和构建器方面有着愉快的体验,因此我对它们有很好的了解。但我可以找到仅构建 html 文件的 Groovy 模板。所有示例都以类似的行开头,如下所示:

html {
      head {
      title( ... )
...
      }
}

有没有办法在提供 JSON 的 SpringMVC 上下文中编写 Groovy 模板?例如,诸如 Grails JSON 视图之类的称为 gson 文件的文件(请参阅 this)。

感谢大家的关注。

【问题讨论】:

    标签: java spring-mvc grails groovy


    【解决方案1】:

    Groovy 本身具有很好的生成 json 的功能。

    你的类可以很容易地转换成json:

    import groovy.json.*
    
    class SomeClass{
       String name
       int value
       List someList = ['value1', 'value2', 'value3']
    }
    
    assert JsonOutput.toJson(new SomeClass(name:'myClass', value: 3)) == 
    '{"value":3,"someList":["value1","value2","value3"],"name":"myClass"}'
    

    创建自己的模板引擎也很容易。 例如:

    def SOME_CLASS_TEMPLATE = {SomeClass someClass->
       [
          the_json:[
             message: 'Message',
             name: someClass.name,
             first_list_value: someClass.someList?.getAt(0)
          ]
       ]
    }
    
    assert JsonOutput.toJson(SOME_CLASS_TEMPLATE(new SomeClass(name:'myClass', value: 3))) == 
    '{"the_json":{"message":"Message","name":"myClass","first_list_value":"value1"}}'
    

    格式化的json输出:

    assert JsonOutput.prettyPrint(JsonOutput.toJson(SOME_CLASS_TEMPLATE(new SomeClass(name:'myClass', value: 3)))) == 
    '''{
        "the_json": {
            "message": "Message",
            "name": "myClass",
            "first_list_value": "value1"
        }
    }'''
    

    同时检查 groovy.json 包中的其他类(JsonGeneratorJsonBuilder),它们可能更适合您的任务。

    【讨论】:

    • 谢谢。但我知道 groovy 提供了这种能力。我想将它用作 SpringMCV 中的视图模板。
    • JsonOutput.toJson() 返回字符串。你只需要从你的控制器返回这个字符串
    • 我的愿望好像说不清楚。我需要类似 grails json 视图的东西,但在 java 和 spring mvc 中。
    • 您可以将 groovy 插件添加到您的构建文件中。然后你可以用 groovy 编写模板并从你的 java 类中调用它们。或者您只想使用 java?
    • 我对 groovy 没问题。但问题是 spring 不支持 groovy 模板作为视图。我想使用 groovy 模板在不在 java 类中的视图中生成 json。
    猜你喜欢
    • 1970-01-01
    • 2016-11-26
    • 2014-08-04
    • 2011-01-22
    • 2013-09-15
    • 2019-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多