我有 ColdFusion 9.0.1 和最新的修补程序 (4)。 我需要 ColdFusion 返回所有带有引号的 JSON 数据(作为字符串)。我有以下问题:
<cfset test = StructNew()>
<cfset test.name = "1234.100">
<cfoutput>#SerializeJSON(test)#</cfoutput>
输出的文本是:
{"name":1234.100}
每个 javascript JSON 解析器都会将其转换为 1234.1,并且不会保留尾随的 0。我要么需要 ColdFusion 输出为字符串,要么需要一个 javascript 解析器来保留尾随的 0。有什么想法吗?
这是一个简化的例子。我正在从数据库中获取这些数据。
最佳答案
我知道这个问题很老,但作为一个新的 CF 开发人员,我遇到了同样的问题,虽然我成功地使用了上面的“字符串 Hack”,但最终我从 Cold Fusion 文档中找到了更适合 serializeJSON 的解决方案.
'Adobe ColdFusion(2016 版)更新 2 使您能够为结构中的键指定数据类型信息。这称为元数据。”
<cfscript>
example = structnew();
example.firstname = "Yes";
example.lastname = "Man";
writeoutput("<b>After serialization</b>:");
// change the JSON key firstname to fname
metadata = {firstname: {type:"string",name:"fname"}};
example.setMetadata(metadata);
writeoutput(SerializeJSON(example));
</cfscript>
虽然该示例显示修改字符串“Yes”的元数据以保留字符串,而不是转换为 bool 值,但它同样适用于将数字转换为字符串以进行 JSON 序列化。
关于javascript - 使用 SerializeJSON 防止 ColdFusion 将字符串转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19825437/