从JSON对象,Python中提取键值对数据

时间:2019-10-09 08:23:46

标签: json python-3.x

我需要从此json数组中提取键值对数据。我需要提取“ producId”之类的数据以及在父数组中的数组内部的可用性状态。

data=[
 {
  "productId": 1001080012,
  "storeNumber": 289,
  "isSosVendorDirect": true,
  "price": {
   "selling": "249.00",
   "retail": "249.00",
   "typeCode": 1,
   "typeIndicator": "Regular Price"
  },
  "availability": 
  [
   {
    "availabilityStatus": "Available",
    "productStockType": "STK",
    "availabileQuantity": 822,
    "deliveryMethodId": 1,
    "deliveryMethodName": "Parcel Shipping",
    "storeNumber": 907
   },
   {
    "availabilityStatus": "Available",
    "productStockType": "STK",
    "availabileQuantity": 1,
    "leadTime": 1570607222335,
    "deliveryMethodId": 2,
    "deliveryMethodName": "Store Pickup",
    "storeNumber": 289
   },
   {
    "availabilityStatus": "Available",
    "productStockType": "STK",
    "availabileQuantity": 1,
    "leadTime": 1570607222335,
    "deliveryMethodId": 3,
    "deliveryMethodName": "Truck Delivery",
    "storeNumber": 289
   }
  ],
  "@type": "item"
 }
]

我已经厌倦了。

price=data[selling]
store=data[storeNumber]

2 个答案:

答案 0 :(得分:1)

您混合使用了嵌套列表和字典。查看它,您可以弄清楚其结构。

假设您的数据为:

txt = '''
[
 {
  "productId": 1001080012,
  "storeNumber": 289,
  "isSosVendorDirect": true,
  "price": {
   "selling": "249.00",
   "retail": "249.00",
   "typeCode": 1,
   "typeIndicator": "Regular Price"
  },
  "availability": 
  [
   {
    "availabilityStatus": "Available",
    "productStockType": "STK",
    "availabileQuantity": 822,
    "deliveryMethodId": 1,
    "deliveryMethodName": "Parcel Shipping",
    "storeNumber": 907
   },
   {
    "availabilityStatus": "Available",
    "productStockType": "STK",
    "availabileQuantity": 1,
    "leadTime": 1570607222335,
    "deliveryMethodId": 2,
    "deliveryMethodName": "Store Pickup",
    "storeNumber": 289
   },
   {
    "availabilityStatus": "Available",
    "productStockType": "STK",
    "availabileQuantity": 1,
    "leadTime": 1570607222335,
    "deliveryMethodId": 3,
    "deliveryMethodName": "Truck Delivery",
    "storeNumber": 289
   }
  ],
  "@type": "item"
 }
]
'''

然后:

import json
data = json.loads(txt)

price = data[0]['price']['selling']
print(price)

store = data[0]['availability'][0]['storeNumber']
print(store)

输出:

249.00
907

答案 1 :(得分:1)

由于数据为长度为1的数组,因此必须首先调用第0个索引。

price=data[0]['price']['selling']
store=data[0]['storeNumber']

print(price, store)

结果如下:

249.00 289

您还可以在可用性密钥中使用storeNumber,它们具有不同的值。在这种情况下,您必须指定要选择的值,但我不知道想要什么。