我希望通过模板引擎生成有效的JSON。特别是,我想让引擎用模型类的属性替换模板中的占位符。
该引擎应允许使用转换器处理诸如
以下是模板的示例:
我希望能够从具有关系、名字和姓氏属性的模型中替换此模板中的变量(
绑定模型后,JSON 可能如下所示:
请注意,引擎需要在必要时使用引号。
是否有任何模板库可以做到这一点,还是我需要自己编写库?
我已经研究了以下库:
- Freemarker - Velocity - Stringtemplate
我还阅读了几个帖子:
- 类似于ZPT(属性语言)的Java模板库 - 用于渲染JSON的Spring模板引擎
然而,到目前为止,我没有找到令人满意的解决方案。
背景信息:
java.util.Date
之类的复杂类。
此外,我不想在模板本身中显式地处理列表,而是希望任何类似集合的类型能产生有效的JSON数组。以下是模板的示例:
{
"uber" :
{
"version" : "1.0",
"data" :
[
{
"rel" : $relations,
"data" :
[
{"name" : "firstname", "value" : $firstname},
{"name" : "lastname", "value" : $lastname}
]
}
]
}
}
我希望能够从具有关系、名字和姓氏属性的模型中替换此模板中的变量(
$relations
,$firstname
,$lastname
)。这也适用于嵌套属性。(例如:$address.street
)绑定模型后,JSON 可能如下所示:
{
"uber" :
{
"version" : "1.0",
"data" :
[
{
"rel" : ["person"],
"data" :
[
{"name" : "firstname", "label" : "Firstname", "value" : "Max"},
{"name" : "lastname", "label" : "Lastname", "value" : "Mustermann"}
]
}
]
}
}
请注意,引擎需要在必要时使用引号。
是否有任何模板库可以做到这一点,还是我需要自己编写库?
我已经研究了以下库:
- Freemarker - Velocity - Stringtemplate
我还阅读了几个帖子:
- 类似于ZPT(属性语言)的Java模板库 - 用于渲染JSON的Spring模板引擎
然而,到目前为止,我没有找到令人满意的解决方案。
背景信息:
Uber是一种与域无关的超媒体格式,它通过嵌套data
元素来编码数据。如果您想使用像Jackson这样的库序列化它,那么这种格式非常麻烦,因为您必须创建许多对象并通过setter进行嵌套,这会导致大量代码,并且也容易出错。
这就是为什么我考虑使用模板来生成输出,并让用户编写模板,稍后将模型绑定到此模板以生成输出。