我想在模板引擎的帮助下生成有效的 JSON。特别是,我希望引擎将模板中的占位符替换为模型类的属性。引擎应该允许使用转换器来处理复杂的类,例如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"}
]
}
]
}
}
请注意,引擎需要注意在必要时使用引号。
是否有任何模板库能够做到这一点,或者我需要推出自己的库?
我已经查看了以下库:
- 自由标记
- 速度
- 字符串模板
我还阅读了几个线程:
但是,到目前为止,我还没有找到令人满意的解决方案。
背景资料:
Uber是与领域无关的超媒体格式,它嵌套data
元素以对数据进行编码。如果您想使用 Jackson 这样的库对其进行序列化,则这种格式的生成非常麻烦,因为您必须创建大量对象并通过 setter 将它们嵌套,这会导致大量代码并且也很容易出错。
这就是为什么我想到使用模板来生成输出并让用户编写模板,然后将模型绑定到该模板以生成输出的原因。