类 TextTemplate
java.lang.Object
dev.tinyflow.core.util.TextTemplate
文本模板引擎,用于将包含 {{xxx}} 占位符的字符串模板,动态渲染为最终文本。
支持 JSONPath 取值语法与 “??” 空值兜底逻辑。
例如: 模板: "Hello {{ user.name ?? 'Unknown' }}!" 数据: { "user": { "name": "Alice" } } 输出: "Hello Alice!"
支持缓存模板与 JSONPath 编译结果,提升性能。
-
嵌套类概要
嵌套类修饰符和类型类说明private static class表达式解析结果。private static class模板解析的最终结果,包含: - 解析后的表达式树(ParseResult) - 是否显式声明空兜底private static class模板片段对象。 -
字段概要
字段修饰符和类型字段说明JSONPath 编译缓存,避免重复编译private final String原始模板字符串private static final Pattern匹配 {{ expression }} 的正则表达式private static final Map<String,TextTemplate> 模板缓存(按原始模板字符串)private final List<TextTemplate.TemplateToken>模板中拆分出的静态与动态 token 列表 -
构造器概要
构造器 -
方法概要
修饰符和类型方法说明static void清空模板与 JSONPath 缓存private static StringescapeJsonString(String input) 将字符串进行 JSON 安全转义private Stringevaluate(TextTemplate.ParseResult pr, Map<String, Object> root, boolean escapeForJsonOutput) 递归求值表达式(支持多级兜底)formatToString(List<Map<String, Object>> rootMaps) formatToString(Map<String, Object> rootMap) 将模板格式化为字符串formatToString(Map<String, Object> rootMap, boolean escapeForJsonOutput) 将模板格式化为字符串,可选择是否对结果进行 JSON 转义private ObjectgetValueByJsonPath(Map<String, Object> root, String path, boolean escapeForJsonOutput) 根据 JSONPath 获取对象值static TextTemplate从缓存中获取或新建模板实例private List<TextTemplate.TemplateToken>parseTemplate(String template) 解析模板字符串,将其拆解为静态文本与动态占位符片段private TextTemplate.TemplateParseResult解析单个表达式内容,处理 ??private static String去掉字符串两端的引号
-
字段详细资料
-
PLACEHOLDER_PATTERN
匹配 {{ expression }} 的正则表达式 -
TEMPLATE_CACHE
模板缓存(按原始模板字符串) -
JSONPATH_CACHE
JSONPath 编译缓存,避免重复编译 -
originalTemplate
原始模板字符串 -
tokens
模板中拆分出的静态与动态 token 列表
-
-
构造器详细资料
-
TextTemplate
-
-
方法详细资料
-
of
从缓存中获取或新建模板实例 -
clearCache
清空模板与 JSONPath 缓存 -
formatToString
-
formatToString
将模板格式化为字符串 -
formatToString
将模板格式化为字符串,可选择是否对结果进行 JSON 转义- 参数:
rootMap- 数据上下文escapeForJsonOutput- 是否对结果进行 JSON 字符串转义
-
parseTemplate
解析模板字符串,将其拆解为静态文本与动态占位符片段 -
parseTemplateExpression
解析单个表达式内容,处理 ?? 空值兜底逻辑。 例如: user.name ?? user.nick ?? "未知" -
evaluate
private String evaluate(TextTemplate.ParseResult pr, Map<String, Object> root, boolean escapeForJsonOutput) 递归求值表达式(支持多级兜底) -
getValueByJsonPath
private Object getValueByJsonPath(Map<String, Object> root, String path, boolean escapeForJsonOutput) 根据 JSONPath 获取对象值 -
escapeJsonString
将字符串进行 JSON 安全转义 -
unquote
去掉字符串两端的引号
-