1.官网文档
Introducing Thymeleaf
1.引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
2.初始化引擎
public class ThymeleafUtils {
private static TemplateEngine engine;
static {
engine = new SpringTemplateEngine();
StringTemplateResolver templateResolver = new StringTemplateResolver();
templateResolver.setTemplateMode(TemplateMode.JAVASCRIPT);
templateResolver.setCacheable(false);
engine.addTemplateResolver(templateResolver);
}
public static String process(Map<String, Object> variables, String template) {
Context context = new Context();
context.setVariables(variables);
return engine.process(template, context);
}
}
3.使用
3.1 目标
{
"name":"yonsh",
"age":18,
"score":"{\"math\":100,\"english\":99,\"science\":99}",
"friends":[
"jack",
"mark",
"vinn"
]
}
- 将上述name映射为新的last_name
- score字段中的内容打平
- friends字段设置默认的年龄
3.2模版
{
[# th:with="gen=${T(java.util.UUID).randomUUID().toString()}" ]
"id":[[ ${gen} ]],
[/]
"first_name": [[ ${#strings.isEmpty(name)} ? '' : ${name} ]],
"age": [[ ${#objects.nullSafe(age, 16)} ]],
[# th:with="parsed=${T(com.alibaba.fastjson2.JSON).parseObject(score)}" ]
"math": [[ ${parsed?.get('math')} ]],
"english": [[ ${parsed?.get('english')} ]],
"science": [[ ${parsed?.get('science')} ]],
[/]
"friends":[
[# th:each="item,iterStat : ${friends}" ]
{ [[ ${item} ]] : [[ ${age} ]] }[( ${iterStat.last} ? '' : ',' )]
[/]
]
}
3.3测试代码
@Test
public void test001(){
String template = "{\n" +
" [# th:with="uuid=${T(java.util.UUID).randomUUID().toString()}" ]\n" +
" "id":[[ ${uuid} ]],\n" +
" [/]\n" +
" "first_name": [[ ${#strings.isEmpty(name)} ? '' : ${name} ]],\n" +
" "age": [[ ${#objects.nullSafe(age, 16)} ]],\n" +
" [# th:with="parsed=${T(com.alibaba.fastjson2.JSON).parseObject(score)}" ]\n" +
" "math": [[ ${parsed?.get('math')} ]],\n" +
" "english": [[ ${parsed?.get('english')} ]],\n" +
" "science": [[ ${parsed?.get('science')} ]],\n" +
" [/]\n" +
" "friends":[\n" +
" [# th:each="item,iterStat : ${friends}" ]\n" +
" { [[ ${item} ]] : [[ ${age} ]] }[( ${iterStat.last} ? '' : ',' )]\n" +
" [/] \n" +
" ]\n" +
"}";
String data = "{\n" +
" "name":"yonsh",\n" +
" "age":18,\n" +
" "score":"{\"math\":100,\"english\":99,\"science\":99}",\n" +
" "friends":[\n" +
" "jack",\n" +
" "mark",\n" +
" "vinn"\n" +
" ]\n" +
"}";
JSONObject map = JSON.parseObject(data);
String process = ThymeleafUtils.process(map, template);
log.info(process);
}
3.4输出内容
{
"id":"c80c33e8-3716-4b8c-ac99-721e5e1e52a5",
"first_name": "yonsh",
"age": 18,
"math": 100,
"english": 99,
"science": 99,
"friends":[
{ "jack" : 18 },
{ "mark" : 18 },
{ "vinn" : 18 }
]
}