Возникли проблемы при попытке получить определенное значение ключа из Stripe API с использованием точечной нотации с помощью JSON

#javascript #json #stripe-payments

#javascript #json #stripe-платежи

Вопрос:

Я извлекаю данные из Stripe API из тестового счета. Я пытаюсь сузить круг, чтобы извлечь определенную пару значений ключа, используя точечную нотацию, но у меня возникают проблемы с извлечением данных из определенного значения ключа, поскольку оно кажется более глубоким, чем остальные данные (не уверен, что это правильная терминология).

Данные, из которых я пытаюсь извлечь данные, взяты из period: end: и period: start: примерно из строк 44-46.

Если я использую точечную нотацию в своем коде, это работает, когда пара ключ-значение находится в одной строке, например sheet.getRange(3,2).setValue([content.amount_due]); . Но кажется, что «период: конец» и «период: начало» вложены глубже.

Я пытался сделать что-то вроде [content.lines.data.period.end] , но это не сработало. Он возвращает эту ошибку: TypeError: Cannot read property "end" from undefined.

Вот полные данные, извлеченные из API (примечание: "xxxxxxxxxxxxxxxx" представляет данные, которые были скрыты):

   ""id"": ""in_xxxxxxxxxxxxxxxx"",
  ""object"": ""invoice"",
  ""amount_due"": 800,
  ""amount_paid"": 800,
  ""amount_remaining"": 0,
  ""application_fee"": null,
  ""attempt_count"": 1,
  ""attempted"": true,
  ""auto_advance"": false,
  ""billing"": ""charge_automatically"",
  ""billing_reason"": ""subscription_cycle"",
  ""charge"": ""ch_xxxxxxxxxxxxxxxx"",
  ""closed"": true,
  ""created"": 1552077120,
  ""currency"": ""usd"",
  ""custom_fields"": null,
  ""customer"": ""cus_xxxxxxxxxxxxxxxx"",
  ""date"": 1552077120,
  ""default_payment_method"": null,
  ""default_source"": null,
  ""description"": null,
  ""discount"": null,
  ""due_date"": null,
  ""ending_balance"": 0,
  ""finalized_at"": 1552080770,
  ""footer"": null,
  ""forgiven"": false,
  ""hosted_invoice_url"": ""https://pay.stripe.com/invoice/invst_xxxxxxxxxxxxxxxx"",
  ""invoice_pdf"": ""https://pay.stripe.com/invoice/invst_xxxxxxxxxxxxxxxx/pdf"",
  ""lines"": {
    ""object"": ""list"",
    ""data"": [
      {
        ""id"": ""sub_xxxxxxxxxxxxxxxx"",
        ""object"": ""line_item"",
        ""amount"": 800,
        ""currency"": ""usd"",
        ""description"": null,
        ""discountable"": true,
        ""livemode"": false,
        ""metadata"": {
        },
        ""period"": {
          ""end"": 1554755515,
          ""start"": 1552077115
        },
        ""plan"": {
          ""id"": ""xxxxxxxxxxxxxxxx"",
          ""object"": ""plan"",
          ""active"": true,
          ""aggregate_usage"": null,
          ""amount"": 400,
          ""billing_scheme"": ""per_unit"",
          ""created"": 1407529859,
          ""currency"": ""usd"",
          ""interval"": ""month"",
          ""interval_count"": 1,
          ""livemode"": false,
          ""metadata"": {
          },
          ""name"": ""sdf"",
          ""nickname"": null,
          ""product"": ""prod_xxxxxxxxxxxxxxxx"",
          ""statement_description"": null,
          ""statement_descriptor"": null,
          ""tiers"": null,
          ""tiers_mode"": null,
          ""transform_usage"": null,
          ""trial_period_days"": null,
          ""usage_type"": ""licensed""
        },
        ""proration"": false,
        ""quantity"": 2,
        ""subscription"": null,
        ""subscription_item"": ""si_xxxxxxxxxxxxxxxx"",
        ""type"": ""subscription"",
        ""unique_line_item_id"": ""sli_xxxxxxxxxxxxxxx""
      }
    ],
    ""has_more"": false,
    ""total_count"": 1,
    ""url"": ""/v1/invoices/in_xxxxxxxxxxxxxxxx/lines""
  },
  ""livemode"": false,
  ""metadata"": {
  },
  ""next_payment_attempt"": null,
  ""number"": ""77E3C02-0025"",
  ""paid"": true,
  ""payment"": ""ch_1xxxxxxxxxxxxxxxx"",
  ""payment_intent"": ""pi_xxxxxxxxxxxxxxxx"",
  ""period_end"": 1552077115,
  ""period_start"": 1549657915,
  ""receipt_number"": ""2258-2679"",
  ""starting_balance"": 0,
  ""statement_description"": null,
  ""statement_descriptor"": null,
  ""status"": ""paid"",
  ""status_transitions"": {
    ""finalized_at"": 1552080770,
    ""marked_uncollectible_at"": null,
    ""paid_at"": 1552080772,
    ""voided_at"": null
  },
  ""subscription"": ""sub_xxxxxxxxxxxxxxxx"",
  ""subtotal"": 800,
  ""tax"": null,
  ""tax_percent"": null,
  ""total"": 800,
  ""webhooks_delivered_at"": 1552077123
}"```


  [1]: https://stripe.com/docs/api/invoices/retrieve
 

Комментарии:

1. Справочная страница Stripe API на всякий случай.

Ответ №1:

данные — это массив, попробуйте content.lines.data[0].period.end .