Freemarker 模板解析器或 snakeyaml 未按预期打印 json 字符串
Freemarker template parser or snakeyaml does not print json strings as expected
我们正在尝试打印出 json 格式的字符串作为 yaml 文件中不带引号的值。我们正在使用 Freemarker 模板引擎版本 2.3.26,并使用 org.yaml.snakeyaml
库将输出转储到 yaml 文件中。
我们要么看到 json 转换为 yaml,要么看到 json 被单引号包围;尽管 https://try.freemarker.apache.org/ 似乎表明这是可能的。
以下是带有代码片段和相应输出的几个示例:
<#assign a = '{"key": "val"}'>
setting_a: ${a?string}
打印(不带引号)
string_a:
key: val
<#assign a = '{"key": "val"}'>
setting_a: ${a?js_string}
打印(带引号和转义)
setting_a:
\"key\": \"val\"
<#assign a = "{"key": "val"}">
setting_a: ${a?json_string}
打印(带引号和转义)
setting_a:
\"key\": \"val\"
<#assign a = "{\"key\": \"val\"}">
setting_a: ${a?string}
打印(不带引号)
setting_a:
key: val
<#assign a = "{"key": "val"}">
setting_a: ${a?js_string}
打印(带引号和转义)
setting_a:
\"key\": \"val\"
<#assign a = "{"key": "val"}">
setting_a: ${a?json_string}
打印(带引号和转义
setting_a:
\"key\": \"val\"
我们期望的是输出 yaml
文件是
setting_a: {"key": "val"}.
- 这可能吗?
- 如果是这样,我们需要select具体
org.yaml.snakeyaml.DumperOptions
吗?
- 如果这不可能,我想知道我是否在 https://try.freemarker.apache.org/
上选择了错误的选项
第一个示例在任何版本的 FreeMarker 中打印 {"key": "val"}
。所以我猜你正在显示将模板输出解析为 YAML 的结果。 (虽然 https://try.freemarker.apache.org 按原样显示模板输出。)在那种情况下,我认为它应该是:setting_a: "${a?js_string}"
.
此外,<#assign a = "{"key": "val"}">
是 FreeMarker 中的语法错误,因此您不应该得到任何输出。
我们正在尝试打印出 json 格式的字符串作为 yaml 文件中不带引号的值。我们正在使用 Freemarker 模板引擎版本 2.3.26,并使用 org.yaml.snakeyaml
库将输出转储到 yaml 文件中。
我们要么看到 json 转换为 yaml,要么看到 json 被单引号包围;尽管 https://try.freemarker.apache.org/ 似乎表明这是可能的。
以下是带有代码片段和相应输出的几个示例:
<#assign a = '{"key": "val"}'>
setting_a: ${a?string}
打印(不带引号)
string_a:
key: val
<#assign a = '{"key": "val"}'>
setting_a: ${a?js_string}
打印(带引号和转义)
setting_a:
\"key\": \"val\"
<#assign a = "{"key": "val"}">
setting_a: ${a?json_string}
打印(带引号和转义)
setting_a:
\"key\": \"val\"
<#assign a = "{\"key\": \"val\"}">
setting_a: ${a?string}
打印(不带引号)
setting_a:
key: val
<#assign a = "{"key": "val"}">
setting_a: ${a?js_string}
打印(带引号和转义)
setting_a:
\"key\": \"val\"
<#assign a = "{"key": "val"}">
setting_a: ${a?json_string}
打印(带引号和转义
setting_a:
\"key\": \"val\"
我们期望的是输出 yaml
文件是
setting_a: {"key": "val"}.
- 这可能吗?
- 如果是这样,我们需要select具体
org.yaml.snakeyaml.DumperOptions
吗? - 如果这不可能,我想知道我是否在 https://try.freemarker.apache.org/ 上选择了错误的选项
第一个示例在任何版本的 FreeMarker 中打印 {"key": "val"}
。所以我猜你正在显示将模板输出解析为 YAML 的结果。 (虽然 https://try.freemarker.apache.org 按原样显示模板输出。)在那种情况下,我认为它应该是:setting_a: "${a?js_string}"
.
此外,<#assign a = "{"key": "val"}">
是 FreeMarker 中的语法错误,因此您不应该得到任何输出。