カフカはTypeErrorにデータを送信する:リストインデックスは、整数またはスライスでなければならない、ない辞書

zhuzhi:

私はカフカ消費者にカフカ生産者からのJSONオブジェクトを送信していますが、私はエラーのgettinています:

TypeError: list indices must be integers or slices, not dict.

以下は、カフカの生産のための私のコードは次のようになります。

jsonFilePath = "data.json"

data = None
with open(jsonFilePath) as f:
  data = json.load(f)

print(type(data))


print(len(data))
count = 0
for record in data:
    # print(str(data[record]))
    # print(data[record])
    producer.send('testTopic', value=data[record])
    count = count + 1

そして、私のJSONは次のようになりますオブジェクト:

 {
    "Order Number": "CA-2014-103800",
    "Order Status": "Completed",
    "Order Date": "03/01/2014",
    "First Name (Billing)": "Saima",
    "Last Name (Billing)": "Nasir",
    "Company (Billing)": "",
    "Address 1&2 (Billing)": "",
    "City (Billing)": "",
    "State Code (Billing)": "PB",
    "Postcode (Billing)": 54810,
    "Country Code (Billing)": "PK",
    "Email (Billing)": "",
    "First Name (Shipping)": "Saima",
    "Last Name (Shipping)": "Nasir",
    "Address 1&2 (Shipping)": "",
    "City (Shipping)": "Lahore",
    "State Code (Shipping)": "PB",
    "Postcode (Shipping)": 54810,
    "Country Code (Shipping)": "PK",
    "Shipping Method Title": "Free shipping",
    "Payment Method Title": "Cash on delivery",
    "Cart Discount Amount": 0,
    "Order Subtotal Amount": 0,
    "Order Shipping Amount": 0,
    "Order Refund Amount": 0,
    "Order Total Amount": 16.448,
    "Order Total Tax Amount": 0,
    "Category": "Kids",
    "Item # #1": 1,
    "SKU #1": "",
    "Item Name #1": "Ladies Shoes - Navy, 40",
    "Quantity #1": 2,
    "Item Cost #1": 0,
    "Coupon Code": "",
    "Discount Amount": 0.2,
    "Discount Amount Tax": "",
    "Profit": 5.5512
  }
Giorgos Myrianthous:

あなたの内部forループ、recordインデックス、代わりに実際の値ではありません。


そのため、代わりに

for record in data:
    producer.send('testTopic', value=data[record])

次のことを試してください:

for record in data:
    producer.send('testTopic', value=record])

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=25998&siteId=1