我们正在尝试打印出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”}。
org.yaml.snakeyaml.DumperOptions
?答案 0 :(得分:0)
第一个示例在任何版本的FreeMarker中打印{"key": "val"}
。所以我想您正在显示将模板的输出解析为YAML的结果。 (虽然https://try.freemarker.apache.org按原样显示模板输出。)在那种情况下,我认为应该是:setting_a: "${a?js_string}"
。
此外,<#assign a = "{"key": "val"}">
是FreeMarker中的语法错误,因此您不应获得任何输出。