首页 > 解决方案 > 如何在 Python 中迭代二维数组

问题描述

我正在发出获取数据的请求。请求和响应如下。我正在尝试迭代结果并做两件事:

  1. 遍历未定义数量的页面(每页最多 100 个结果,因此我需要对我的响应进行分页以获得所有结果)。

  2. 打印/返回 CombinedPaymentStatus = PAID 的订单列表。

我确定我的请求尚未完成,但我被困在这一点上。我最近收到了这个错误: json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 129 (char 128).

我认为使用该变量paymentStatus会有所帮助,索引[1]是静态的,因此不会遍历数组中的每个项目。

要求:

import requests
import json
import config

url = 'https://inventory.dearsystems.com/ExternalApi/v2/saleList?Page=25&Limit=100&CreatedSince=2021-05-01'

payload = {}
headers = {
  "Content-Type": "application/json",
  "api-auth-accountid": config.liveAccountid,
  "api-auth-applicationkey": config.liveApplicationKey
}

response = requests.request("GET", url, headers=headers, data=payload)

paymentStatus = response.json()["SaleList"][1]["CombinedPaymentStatus"]
total = response.json()["Total"]
page = response.json()["Page"]

for paymentStatus in response:
    json.loads(paymentStatus)
    print(paymentStatus)

回复:

{
 "Total": 6471,
 "Page": 1,
 "SaleList": [
 {
  "SaleID": "6222cb47-0e1e-450d-af6d-0cefcee9eef7",
  "OrderNumber": "SO-00092",
  "Status": "ORDERED",
  "OrderDate": "2017-09-29T00:00:00Z",
  "InvoiceDate": null,
  "Customer": "Rock Star Transport",
  "CustomerID": "74de0528-fae7-4233-9222-e92110d57f5a",
  "InvoiceNumber": null,
  "CustomerReference": "",
  "InvoiceAmount": 0,
  "PaidAmount": 0,
  "InvoiceDueDate": null,
  "ShipBy": null,
  "BaseCurrency": "RUB",
  "CustomerCurrency": "RUB",
  "CreditNoteNumber": null,
  "Updated": "2017-09-29T03:03:13.913Z",
  "QuoteStatus": "AUTHORISED",
  "OrderStatus": "AUTHORISED",
  "CombinedPickingStatus": "PICKED",
  "CombinedPaymentStatus": "PAID",
  "CombinedTrackingNumbers": "",
  "CombinedPackingStatus": "PACKED",
  "CombinedShippingStatus": "SHIPPING",
  "CombinedInvoiceStatus": "INVOICED",
  "CreditNoteStatus": "NOT AVAILABLE",
  "FulFilmentStatus": "NOT FULFILLED",
  "Type": "Advanced Sale",
  "SourceChannel": "Amazon_US",
  "ExternalID": null,
  "OrderLocationID": "8b5d4343-c007-43d7-8e8f-6fa6c0d29f22"
 },
 {
  "SaleID": "a6558396-8893-479b-bca9-f89ea3e54633",
  "OrderNumber": "SO-00091",
  "Status": "BACKORDERED",
  "OrderDate": "2017-09-28T00:00:00Z",
  "InvoiceDate": "2017-09-28T00:00:00Z",
  "Customer": "Rock Star Transport",
  "CustomerID": "9a4513e9-a7a4-4ee5-b240-84cfd8944cde",
  "InvoiceNumber": "INV-06073",
  "CustomerReference": "19614",
  "InvoiceAmount": 0,
  "PaidAmount": 0,
  "InvoiceDueDate": "2017-10-02T00:00:00Z",
  "ShipBy": "2017-09-29T00:00:00Z",
  "BaseCurrency": "RUB",
  "CustomerCurrency": "AUD",
  "CreditNoteNumber": null,
  "Updated": "2017-09-29T03:00:48.043Z",
  "QuoteStatus": "NOT AVAILABLE",
  "OrderStatus": "AUTHORISED",
  "CombinedPickingStatus": "NOT PICKED",
  "CombinedPaymentStatus": "UNPAID",
  "CombinedTrackingNumbers": "",
  "CombinedPackingStatus": "NOT PACKED",
  "CombinedShippingStatus": "NOT SHIPPED",
  "CombinedInvoiceStatus": "NOT INVOICED",
  "CreditNoteStatus": "NOT AVAILABLE",
  "FulFilmentStatus": "NOT FULFILLED",
  "Type": "Simple Sale",
  "SourceChannel": null,
  "ExternalID": null,
  "OrderLocationID": "8b5d4343-c007-43d7-8e8f-6fa6c0d29f22"
 }
 ]
}

标签: pythonpython-requests

解决方案


推荐阅读