Coldfusion 11和Coldfusion 2016之间的编码问题
我目前使用ColdFusion 11作为开发的本地服务器 我有一个用ColdFusion序列化的JSON字符串。在字符串中,我必须在对象“Payment_form”中插入代码“99”。响应中需要的Api告诉我Payment_form对象是字符串 了解使用JSON字符串和数字表示的ColdFusion序列化的问题,请查看这里的StackOverflow,并通过放置“chr(2)”找到解决方案 问题解决了。。。。但只有在ColdFusion 11中。当我将代码上传到ColdFusion主机(hostek.com/CF2016)时,它停止工作,因为chr(2)返回值“/u000299”,因此API会以错误响应 我假设ColdFusion 2016更改了对chr()的处理,但在两个版本的文档中,对该函数的处理没有任何更改 似乎CF/2016正在根据ASCII表进行更改(转义Unicode) 那么?。有人知道怎么解决这个问题吗Coldfusion 11和Coldfusion 2016之间的编码问题,coldfusion,Coldfusion,我目前使用ColdFusion 11作为开发的本地服务器 我有一个用ColdFusion序列化的JSON字符串。在字符串中,我必须在对象“Payment_form”中插入代码“99”。响应中需要的Api告诉我Payment_form对象是字符串 了解使用JSON字符串和数字表示的ColdFusion序列化的问题,请查看这里的StackOverflow,并通过放置“chr(2)”找到解决方案 问题解决了。。。。但只有在ColdFusion 11中。当我将代码上传到ColdFusion主机(host
- 这与托管服务有关吗李>
- Hostek.com是否有其他编码器连接到我的本地服务器
<cfset requestData = {"customer": "#customer#"
, "items":#empStruct#
, "payment_form":"#chr(2)#99"
, "payment_method": "#payment_method#"
, "use": "#use#"
, "folio_number": "#folio_number#"
, "series": "#series#"
}>
与ColdFusion 2016系列化退出链(ColdFusion Hosting Hostek.com)
TL;博士强> 与其尝试“修复修复”,不如尝试使用
在开发中使用与Prod不同的版本总是会导致流泪。。。看一看。使用不同版本的CF非常容易 chr(2)返回值“/u000299” 无论如何。。serializeJSON()函数是将
chr(2)
转换为/u0002
的函数。然而,这似乎不是新的行为。与其尝试“修复修复”,不如尝试使用以下选项之一:
Adobe ColdFusion(2016版)更新2允许您指定
结构中键的数据类型信息。这就是所谓的元数据
将payment\u form
值显式声明为字符串,CF将其括在引号中,而不是猜测它是一个数字
输入:
input = {"payment_form":"99"};
input.setMetadata( {payment_form: {type: "string"}} );
output = serializeJSON( input );
writeDump( output );
{"payment_form":"99"}
结果:
input = {"payment_form":"99"};
input.setMetadata( {payment_form: {type: "string"}} );
output = serializeJSON( input );
writeDump( output );
{"payment_form":"99"}
此外,如果您是从查询对象构建此查询,CF2016还添加了两个新的应用程序设置,可以覆盖序列化查询的古怪默认设置,使其更易于操作。谢谢!!我把你的例子应用到我的json链上,效果非常好!感谢RegardsGlad提供的提示:-)JSON处理仍然存在一些问题,但在CF2016+中要好得多。
{"payment_form":"99"}