2021年3月18日星期四

Loop through JSON Object Swift 5

I am trying to iterate through a JSON object and obtain specific values in the swift programming language.

I am receiving a JSON like so

let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [String : Any],  let charges = json["charges"] as? [String:Any]  

json:

{    object: 'list',    data: [      {        id: 'ch_1IWQEfKn7R1M6tqnhrpyIhMk',        object: 'charge',        amount: 555,        amount_captured: 555,        amount_refunded: 0,        application: 'ca_IXRQuoBh5mSJXXpEccXssma6Oz0u3HjX',        application_fee: 'fee_1IWQEfKn7R1M6tqnvTHQeSEF',        application_fee_amount: 6,        balance_transaction: 'txn_1IWQEfKn7R1M6tqnkK9LCNuM',        billing_details: [Object],        calculated_statement_descriptor: 'TEST ACCOUNT',        captured: true,        created: 1616090777,        currency: 'usd',        customer: null,        description: null,        destination: null,        dispute: null,        disputed: false,        failure_code: null,        failure_message: null,        fraud_details: {},        invoice: null,        livemode: false,        metadata: {},        on_behalf_of: null,        order: null,        outcome: [Object],        paid: true,        payment_intent: 'pi_1IWQEeKn7R1M6tqnYbGfFCzg',        payment_method: 'pm_1IWQEeKn7R1M6tqnKLxSg6vZ',        payment_method_details: [Object],        receipt_email: null,        receipt_number: null,        receipt_url: 'https://pay.stripe.com/receipts/acct_1ISouBKn7R1M6tqn/ch_1IWQEfKn7R1M6tqnhrpyIhMk/rcpt_J8hdy05N6VfOmRECdumpti8Jiljz2Et',        refunded: false,        refunds: [Object],        review: null,        shipping: null,        source: null,        source_transfer: null,        statement_descriptor: null,        statement_descriptor_suffix: null,        status: 'succeeded',        transfer_data: null,        transfer_group: null      },      {        id: 'ch_1IU62QKn7R1M6tqnbXXlOpch',        object: 'charge',        amount: 5599,        amount_captured: 5599,        amount_refunded: 0,        application: 'ca_IXRQuoBh5mSJXXpEccXssma6Oz0u3HjX',        application_fee: 'fee_1IU62RKn7R1M6tqnLle3zblA',        application_fee_amount: 56,        balance_transaction: 'txn_1IU62RKn7R1M6tqn3ttu9F3N',        billing_details: [Object],        calculated_statement_descriptor: 'TEST ACCOUNT',        captured: true,        created: 1615536482,        currency: 'usd',        customer: null,        description: null,        destination: null,        dispute: null,        disputed: false,        failure_code: null,        failure_message: null,        fraud_details: {},        invoice: null,        livemode: false,        metadata: {},        on_behalf_of: null,        order: null,        outcome: [Object],        paid: true,        payment_intent: 'pi_1IU62NKn7R1M6tqnWSOLJVge',        payment_method: 'pm_1IU62PKn7R1M6tqnIyOUgUMX',        payment_method_details: [Object],        receipt_email: null,        receipt_number: null,        receipt_url: 'https://pay.stripe.com/receipts/acct_1ISouBKn7R1M6tqn/ch_1IU62QKn7R1M6tqnbXXlOpch/rcpt_J6Id30gjIhQU6AWPBHgUXoujbhFOTyf',        refunded: false,        refunds: [Object],        review: null,        shipping: null,        source: null,        source_transfer: null,        statement_descriptor: null,        statement_descriptor_suffix: null,        status: 'succeeded',        transfer_data: null,        transfer_group: null      },      {        id: 'ch_1IU60cKn7R1M6tqny9o2NV5W',        object: 'charge',        amount: 1000,        amount_captured: 1000,        amount_refunded: 0,        application: 'ca_IXRQuoBh5mSJXXpEccXssma6Oz0u3HjX',        application_fee: 'fee_1IU60cKn7R1M6tqn95nUHETe',        application_fee_amount: 10,        balance_transaction: 'txn_1IU60cKn7R1M6tqnZKNbSEXf',        billing_details: [Object],        calculated_statement_descriptor: 'TEST ACCOUNT',        captured: true,        created: 1615536370,        currency: 'usd',        customer: null,        description: null,        destination: null,        dispute: null,        disputed: false,        failure_code: null,        failure_message: null,        fraud_details: {},        invoice: null,        livemode: false,        metadata: {},        on_behalf_of: null,        order: null,        outcome: [Object],        paid: true,        payment_intent: 'pi_1IU60ZKn7R1M6tqnrUSK1TQD',        payment_method: 'pm_1IU60bKn7R1M6tqnAUHQXqJG',        payment_method_details: [Object],        receipt_email: null,        receipt_number: null,        receipt_url: 'https://pay.stripe.com/receipts/acct_1ISouBKn7R1M6tqn/ch_1IU60cKn7R1M6tqny9o2NV5W/rcpt_J6Ib5PEZQzEgyXWoOwKcxZ9x7mByCVu',        refunded: false,        refunds: [Object],        review: null,        shipping: null,        source: null,        source_transfer: null,        statement_descriptor: null,        statement_descriptor_suffix: null,        status: 'succeeded',        transfer_data: null,        transfer_group: null      }    ],    has_more: true,    url: '/v1/charges'  }  

How can I iterate through the JSON object to receive "amount", "currency", and "id".

For example PSUEDO:

for item in charges {      print(item["amount"])      print(item["currency"])      print(item["id"])  }  

I may be initializing the json improperly such as

json["charges"] as? [String:Any]

https://stackoverflow.com/questions/66701581/loop-through-json-object-swift-5 March 19, 2021 at 10:02AM

没有评论:

发表评论