将 json 看起来简单的值字符串转换为 ColdFusion 结构

Converting a json looking simple value string to a ColdFusion structure

我在 ColdFusion 脚本中执行以下操作:

svc = new http();
svc.setMethod('post');
svc.setCharset('utf-8');
svc.setUrl('https://api.stripe.com/v1/charges');
svc.addParam(type='header', name='Authorization', value='Bearer #Stripe.mySecretKey#');
svc.addParam(type='formfield', name='amount', value=form.amount);
svc.addParam(type='formfield', name='currency', value='usd');
svc.addParam(type='formfield', name='card', value='#form.card#');
svc.addParam(type='formfield', name='description', value='#form.email#');
prefix = svc.send().getPrefix();
response = prefix.FileContent;
WriteOutput(response & '<br>');
WriteOutput(IsSimpleValue(response) & '<br>');
WriteOutput(IsJSON(response));
dump(response);

我得到的字符串如下所示:

{ "id": "ch_6HAwRK92OsQPoA", "object": "charge", "created": 1432149035, "livemode": false, "paid":正确,"status":"paid","amount":100,"currency":"usd","refunded":错误,"source": { "id": "card_6HAwNGtbdzFdq0", "object": "card", "last4": "4242", "brand": "Visa", "funding": "credit", "exp_month": 12, "exp_year": 2015, "fingerprint": "I2nSF7gS79j9Zhei", "country": "US", "name":空,"address_line1":空,"address_line2":空,"address_city":空,"address_state":空,"address_zip":空,"address_country":空,"cvc_check":"pass","address_line1_check":空,"address_zip_check":空,"dynamic_last4":空,"metadata":{}, "customer": 空}, "captured": 真, "card": { "id": "card_6HAwNGtbdzFdq0", "object": "card", "last4": "4242", "brand": "Visa", "funding": "credit", "exp_month": 12, "exp_year": 2015, "fingerprint": "I2nSF7gS79j9Zhei", "country": "US", "name": 空, "address_line1": 空, "address_line2": 空, "address_city":空,"address_state":空,"address_zip":空,"address_country":空,"cvc_check":"pass","address_line1_check":空,"address_zip_check":空,"dynamic_last4":空,"metadata":{},"customer":空},"balance_transaction":"txn_6HAw4bAUUZ6trA","failure_message":空,"failure_code":空,"amount_refunded":0,"customer":空,"invoice":空,"description":"PhillipSenn@gmail.com","dispute":空,"metadata":{},"statement_descriptor":空,"fraud_details":{},"receipt_email":nu ll, "receipt_number": 空, "shipping": 空, "destination": 空, "application_fee": 空, "refunds": { "object": "list", "total_count": 0, "has_more": 假, "url": "/v1/charges/ch_6HAwRK92OsQPoA/refunds", "data": [] } }

以及"YES"和"YES"。

如果我执行 DeserializeJSON(响应),则会收到 500 错误。

那么,如何将这个看起来像 json 的简单值字符串放入 ColdFusion 结构中,以便我可以引用 response.id 和 response.paid?

您的 CF 或网络服务器设置有问题。

我在 tryCF 上用 CF11 测试了你的 json,它有效。

<cfscript>

json = '{ "id": "ch_6HAwRK92OsQPoA", "object": "charge", "created": 1432149035, "livemode": false, "paid": true, "status": "paid", "amount": 100, "currency": "usd", "refunded": false, "source": { "id": "card_6HAwNGtbdzFdq0", "object": "card", "last4": "4242", "brand": "Visa", "funding": "credit", "exp_month": 12, "exp_year": 2015, "fingerprint": "I2nSF7gS79j9Zhei", "country": "US", "name": null, "address_line1": null, "address_line2": null, "address_city": null, "address_state": null, "address_zip": null, "address_country": null, "cvc_check": "pass", "address_line1_check": null, "address_zip_check": null, "dynamic_last4": null, "metadata": {}, "customer": null }, "captured": true, "card": { "id": "card_6HAwNGtbdzFdq0", "object": "card", "last4": "4242", "brand": "Visa", "funding": "credit", "exp_month": 12, "exp_year": 2015, "fingerprint": "I2nSF7gS79j9Zhei", "country": "US", "name": null, "address_line1": null, "address_line2": null, "address_city": null, "address_state": null, "address_zip": null, "address_country": null, "cvc_check": "pass", "address_line1_check": null, "address_zip_check": null, "dynamic_last4": null, "metadata": {}, "customer": null }, "balance_transaction": "txn_6HAw4bAUUZ6trA", "failure_message": null, "failure_code": null, "amount_refunded": 0, "customer": null, "invoice": null, "description": "PhillipSenn@gmail.com", "dispute": null, "metadata": {}, "statement_descriptor": null, "fraud_details": {}, "receipt_email": null, "receipt_number": null, "shipping": null, "destination": null, "application_fee": null, "refunds": { "object": "list", "total_count": 0, "has_more": false, "url": "/v1/charges/ch_6HAwRK92OsQPoA/refunds", "data": [] } }';

writeOutput(isJSon(json));
writeDump(DeserializeJSON(json));

</cfscript>

运行: http://trycf.com/gist/cb798ff697ac80396284/acf11