【问题标题】:Converting a json looking simple value string to a ColdFusion structure将看起来很简单的 json 值字符串转换为 ColdFusion 结构
【发布时间】:2015-08-03 11:51:44
【问题描述】:

我在 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”:true,“status”:“paid”,“amount”: 100,“货币”:“美元”,“退款”:假,“来源”:{“id”:“card_6HAwNGtbdzFdq0”,“对象”:“卡”,“last4”:“4242”,“品牌”:“ Visa”、“funding”:“credit”、“exp_month”:12、“exp_year”:2015、“fingerprint”:“I2nSF7gS79j9Zhei”、“country”:“US”、“name”:null、“address_line1”:null ,“address_line2”:空,“address_city”:空,“address_state”:空,“address_zip”:空,“address_country”:空,“cvc_check”:“通过”,“address_line1_check”:空,“address_zip_check”:空, "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", “名称”:null,“address_line1”:null,“address_line2”:null,“address_city”:null,“address_state”:null,“address_zi” p”:null,“address_country”:null,“cvc_check”:“pass”,“address_line1_check”:null,“address_zip_check”:null,“dynamic_last4”:null,“元数据”:{},“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" : [] } }

以及“是”和“是”。

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

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

【问题讨论】:

    标签: coldfusion stripe-payments


    【解决方案1】:

    您的 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

    【讨论】:

    • 你知道它是什么吗?!我使用的是转储而不是 writedump!我的天啊!我将 Lucee 用于个人项目,将 ACF 用于工作。
    • @Phillip - 我在您发布的代码中没有看到转储。你能用问题代码更新你的问题以帮助下一个人吗?
    • 好的,我更新了问题。很抱歉让您感到困惑。我想知道是否应该在 customTags 文件夹中放置一个名为 dump 的自定义标签,或者是否有其他扩展 ColdFusion 的方法。
    猜你喜欢
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 2015-07-21
    • 2023-03-13
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    相关资源
    最近更新 更多