java - GroovyTemplate 作为 SpringMVC 的视图技术可以创建 JSON 吗?
问题描述
我想将我的 java 数据类序列化为 JSON。老实说,我 几天前发布了一个相关问题,但是到目前为止我还没有得到答案。目前,所有答案都暗示了杰克逊的注释。但我不喜欢直接让类参与,我认为最好将这项工作委托给视图。
尽管如此,我发现 SpringMVC 支持 GroovyTemplate 并且我在处理 Groovy 模板和构建器方面有着愉快的体验,因此我对它们有很好的了解。但我可以找到仅构建 html 文件的 Groovy 模板。所有示例都以类似的行开头,如下所示:
html {
head {
title( ... )
...
}
}
有没有办法在提供 JSON 的 SpringMVC 上下文中编写 Groovy 模板?例如,诸如 Grails JSON 视图之类的称为 gson 文件的内容(请参阅此处)。
感谢大家的关注。
解决方案
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)中的其他类,它们可能更适合您的任务。
推荐阅读
- sharepoint - 使用带有访问令牌的 SharePoint REST API 上传文档时出现 403 错误
- git - 我试图改变一个 git 配置,但它不会改变。相反,它显示了两种设置?!
- rust - How do I import a rust WASM module in gatsby js?
- c# - Xamarin Forms error: Could not resolve type with token 01000047
- r - How to extract matches from stringr::str_detect in R into a list vector
- tensorflow - 在张量流中使用 CNN 进行特征提取后使用 PCA 作为降维
- ios - 在 ARKit 中将文本和字符进行组合会导致文本开始闪烁?
- python - 使用 Google Speech-to-Text API 的 Python 错误:startswith() 需要至少 1 个参数(给定 0)
- sorbet - 如何在不降级印记的情况下使用 `srb rbiSuggest-typed`?
- java - 如何将从 api 获取的 json 数据放入反应状态数组中?