#python #json
#python #json
Вопрос:
Мне нужно напечатать поле с именем "payment_intent"
в моем теле JSON. В настоящее время мне это не удается. Похоже, я запрашиваю правильный параметр.
Я пробовал вот так
payment_intent = event['data']['object']['payment_intent']
Мое тело JSON:
{
"object": {
"id": "",
"object": "payment_intent",
"amount": 100,
"amount_capturable": 0,
"amount_received": 100,
"application": null,
"application_fee_amount": null,
"canceled_at": null,
"cancellation_reason": null,
"capture_method": "automatic",
"charges": {
"object": "list",
"data": [
{
"id": "",
"object": "charge",
"amount": 100,
"amount_refunded": 0,
"application": null,
"application_fee": null,
"application_fee_amount": null,
"balance_transaction": "",
"billing_details": {
"address": {
"city": null,
"country": "",
"line1": null,
"line2": null,
"postal_code": null,
"state": null
},
"email": "",
"name": "",
"phone": null
},
"captured": true,
"created": 1554414723,
"currency": "usd",
"customer": "",
"description": null,
"destination": null,
"dispute": null,
"failure_code": null,
"failure_message": null,
"fraud_details": {
},
"invoice": null,
"livemode": true,
"metadata": {
},
"on_behalf_of": null,
"order": null,
"outcome": {
"network_status": "approved_by_network",
"reason": null,
"risk_level": "normal",
"seller_message": "Payment complete.",
"type": "authorized"
},
"paid": true,
"payment_intent": "pi_1ELdTCB2MQ8LEk6k2PTkpRd0",
"payment_method_details": {
"card": {
"brand": "visa",
"checks": {
"address_line1_check": null,
"address_postal_code_check": null,
"cvc_check": "pass"
},
"country": "DK",
"exp_month": ,
"exp_year": ,
"fingerprint": "",
"funding": "",
"last4": "",
"three_d_secure": null,
"wallet": null
},
"type": "card"
},
"receipt_email": "",
"receipt_number": "1308-6739",
"receipt_url": "",
"refunded": false,
"refunds": {
"object": "list",
"data": [
],
"has_more": false,
"total_count": 0,
"url": "/v1/charges/ch_1ELdTbB2MQ8LEk6kOQQd5T9n/refunds"
},
"review": null,
"shipping": null,
"source": {
"id": "",
"object": "source",
"amount": null,
"card": {
"exp_month": ,
"exp_year": ,
"last4": "",
"country": "",
"brand": "",
"cvc_check": "",
"funding": "debit",
"fingerprint": "",
"three_d_secure": "optional",
"name": null,
"address_line1_check": null,
"address_zip_check": null,
"tokenization_method": null,
"dynamic_last4": null
},
"client_secret": "",
"created": 15,
"currency": null,
"customer": "",
"flow": "none",
"livemode": true,
"metadata": {
},
"owner": {
"address": {
"city": null,
"country": "DK",
"line1": null,
"line2": null,
"postal_code": null,
"state": null
},
"email": "",
"name": "",
"phone": null,
"verified_address": null,
"verified_email": null,
"verified_name": null,
"verified_phone": null
},
"statement_descriptor": null,
"status": "chargeable",
"type": "card",
"usage": "reusable"
},
"source_transfer": null,
"statement_descriptor": null,
"status": "succeeded",
"transfer_data": null,
"transfer_group": null
}
],
"has_more": false,
"total_count": 1,
"url": "/v1/charges?payment_intent=pi_1ELdTCB2MQ8LEk6k2PTkpqweEwwRd0"
},
"confirmation_method": "automatic",
"created": 1554414698,
"currency": "usd",
"customer": "",
"description": null,
"last_payment_error": null,
"livemode": true,
"metadata": {
},
"next_action": null,
"on_behalf_of": null,
"payment_method_types": [
"card"
],
"receipt_email": null,
"review": null,
"shipping": null,
"source": "",
"statement_descriptor": null,
"status": "succeeded",
"transfer_data": null,
"transfer_group": null
}
}
Комментарии:
1. Кажется, что вы проходите неправильный путь для печати такого параметра. Кстати, трудно сказать с этой информацией, которую вы предоставили в вопросе. Будьте конкретнее, если можете, и укажите больше деталей.
2. Если вы думаете о том, откуда
event
берется, то я могу подтвердить, что проблема не в этом. Проблема заключается в неправильном пути, как вы упомянули. Я просто не уверен, как перейти на правильный путь. Никогда раньше не использовал JSON.3. Является
event
корнем объекта json? если это так, то вам нужно напечатать что-то вроде этого: событие [«объект»][«начисления»][«данные»][0][«payment_intent»]4. используйте
print()
для проверки каждого элемента —print(event)
, nextprint(event['data'])
, nextprint(event['data']['object'])
. Вы также можете использоватьtype()
, чтобы посмотреть, есть ли у вас словарь или список — ie.print( type(event['data']) )
. Если у вас есть словарь, вы можете использовать.keys()
для просмотра ключей в dictionary — ie.print( event['data'].keys() )
. Если у вас есть list, вам нужно использовать[0]
o test first element. ie. typeprint( type(event['object']['charges']['data'][0]) )
и keysprint( event['object']['charges']['data'][0].keys() )