2015-05-21 2 views
1

я сделать следующее в ColdFusion сценария:Преобразование JSON ищет простую строку значение в структуре 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, «currency»: «usd», «refunded»: false, «source»: {«id»: «card_6HAwNGtbdzFdq0», «object»: «card »,« last4 »:« 4242 »,« бренд »:« Visa »,« финансирование »:« кредит »,« exp_month »: 12,« exp_year »: 2015,« отпечаток пальца »:« I2nSF7gS79j9Zhei »,« страна »: «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}, "capture": true, "card": {"id" : «card_6HAwNGtbdzFdq0», «object»: «card», «last4»: «4242», «brand»: «Visa», «финансирование»: «кредит», «exp_month»: 12, «exp_year»: 2015, отпечаток ":" 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": "[email protected]", "argument": 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 (ответ), тогда я получаю ошибку 500.

Итак, как я могу поместить эту строку простого значения, которая выглядит как json, в структуру ColdFusion, чтобы я мог ссылаться на response.id и response.paid?

ответ

3

Что-то не так в настройках вашего CF или веб-сервера.

Я проверил ваш json с CF11 на tryCF, и он работает.

<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": "[email protected]", "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

+0

Вы знаете, что это было ?! Я использовал свалку вместо writedump! О, МОЙ БОГ! Я использую Lucee для личных проектов и ACF для работы. –

+0

@Phillip - я не вижу дампа в коде, который вы опубликовали. Можете ли вы обновить свой вопрос с помощью кода проблемы, чтобы помочь следующему парню? – Leigh

+0

Хорошо, я обновил вопрос. Мне очень жаль, что ты запутался. Интересно, должен ли я помещать пользовательский тег с именем dump в папку customTags или если есть другой способ расширения ColdFusion. –

Смежные вопросы