Freemarker 使用JsonNode对象时,模板里的空字符串默认值无效的解决方案

之前使用JavaBean接收模板返回的数据时一直出错,决定换成JsonNode来接收

(以下均适用js语法,方便代码上色)

<!-- 假定一个body,key只有"a" -->
let body = {"a":"1"};
<!-- 当输入对象为 JavaBean 时,这种写法没问题 -->
"body":{
 	"a":"${body.a!}",
    "b":"${body.b!}"
}
<!-- console -->
"body":{
 	"a":"1",
    "b":""
}
<!-- 当输入对象为 JsonNode 时,问题出来了 -->
"body":{
 	"a":"${body.a!}",
    "b":"${body.b!}"
}
<!-- console -->
"body":{
 	"a":""1"",
    "b":
}

前面转换报错的问题解决了,现在遇到了一个新的问题,解析出来的模板不是标准JSON格式

期间使用过很多种方法均无效,后来想了个直白的办法。。

<!-- 使用反斜杠,硬写入两个双引号 -->
"body":{
 	"a":${body.a!"\"\""},
    "b":${body.b!"\"\""}
}
<!-- console -->
"body":{
 	"a":"1",
    "b":""
}

直接的空字符串在模板里会被无视掉,得实际拼接两个双引号的字符串进去才行。

你可能感兴趣的:(后端,-,学习一下下)