GroovyTemplate,作为SpringMVC的视图技术,可以创建JSON吗?

时间:2018-05-30 00:17:24

标签: java spring-mvc grails groovy

我想将我的java数据类序列化为JSON。说实话,几天前我发布了a relevant question,但到目前为止我还没有得到答案。目前,所有答案都表明杰克逊的注释。但我不想直接参与课程,我认为将这项工作委托给观点更好。

尽管如此,我发现SpringMVC支持GroovyTemplate,我有一个愉快的经验来处理Groovy模板和构建器,所以我对它们有很好的理解。但我可以找到Groovy模板来只构建html文件。所有示例都以类似的行开头:

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

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

我感谢所有人的关注。

1 个答案:

答案 0 :(得分:0)

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 包中的其他类( JsonGenerator JsonBuilder ),它们可能更适合您的任务。