我目前在本地开发中使用 ColdFusion 11 作为服务器。
我有一个使用 ColdFusion 序列化的 JSON 字符串。在字符串中,我需要向对象 "Payment_form" 插入代码 "99"。API 要求响应中的 Payment_form 对象是一个字符串。
由于 ColdFusion 序列化与 JSON 字符串和数字表示存在问题,我在 StackOverflow 上找到了解决方案,即插入 "chr(2)"。
这个问题已经解决....但只在 ColdFusion 11 中解决。当我将代码上传到 ColdFusion 托管(hostek.com/CF2016)时,它停止工作,因为 chr(2) 返回值为 "/u000299",因此 API 响应出错。
我认为 ColdFusion 2016 更改了 chr() 的处理方式,但在两个版本的文档中都没有更改这个函数的处理方式。
看起来 CF/2016 根据 ASCII 表正在更改(转义 Unicode)。
- 这是否与托管服务有关?
- 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 11(本地服务器My_pc)对Exit Chain进行序列化
{
"payment_form": "99",
"series": "F",
"use": "G03",
"customer": "5d965ab97419177948b59a26",
"payment_method": "PPD",
"items": [
{
"quantity": 2,
"product": "5d9639d27419177948b59a0b"
},
{
"quantity": 15,
"product": "5d9639e07419177948b59a0c"
}
],
"folio_number": 7400
}
使用ColdFusion 2016(Coldfusion Hosting Hostek.com)对退出链进行序列化
{
"payment_form": "\\u000299",
"series": "F",
"use": "G03",
"customer": "5d9691f17419177948b59a68",
"payment_method": "PPD",
"items": [
{
"quantity": 500,
"product": "5d9d30bc08b8ad3f683e81bc"
},
{
"quantity": 500,
"product": "5d9d30c908b8ad3f683e81bd"
}
],
"folio_number": 7840
}