web-dev-qa-db-ja.com

Python JSON配列の解析

私は小さなpython大きなデータセットから配列を解析できるスクリプトを作成しようとしています。いくつかのkey:valuesを各オブジェクトから取得して、後でスクリプトで再生できるようにします。今のところ、結果を印刷したいだけです。オブジェクトのみを含むJSONファイルを使用してこれを行うことに成功しましたが、配列に対して機能するようには見えません。どんなヒントでも大歓迎です

私のコードは次のとおりです。

# Load up JSON Function
import json

# Open our JSON file and load it into python
input_file = open ('stores-small.json')
json_array = json.load(input_file)

# Create a variable that will take JSON and put it into a python dictionary
store_details = [
        ["name"],
        ["city"]
    ]

# Learn how to loop better =/
for stores in [item["store_details"] for item in json_array]

# Print my results
print(store_details)

JSONデータのサンプルは次のとおりです。

[
  {
    "id": 1000,
    "type": "BigBox",
    "name": "Mall of America",
    "address": "340 W Market",
    "address2": "",
    "city": "Bloomington",
    "state": "MN",
    "Zip": "55425",
    "location": {
      "lat": 44.85466,
      "lon": -93.24565
    },
    "hours": "Mon: 10-9:30; Tue: 10-9:30; Wed: 10-9:30; Thurs: 10-9:30; Fri: 10-9:30; Sat: 10-9:30; Sun: 11-7",
    "services": [
      "Geek Squad Services",
      "Best Buy Mobile",
      "Best Buy For Business"
    ]
  },
  {
    "id": 1002,
    "type": "BigBox",
    "name": "Tempe Marketplace",
    "address": "1900 E Rio Salado Pkwy",
    "address2": "",
    "city": "Tempe",
    "state": "AZ",
    "Zip": "85281",
    "location": {
      "lat": 33.430729,
      "lon": -111.89966
    },
    "hours": "Mon: 10-9; Tue: 10-9; Wed: 10-9; Thurs: 10-9; Fri: 10-10; Sat: 10-10; Sun: 10-8",
    "services": [
      "Windows Store",
      "Geek Squad Services",
      "Best Buy Mobile",
      "Best Buy For Business"
    ]}
  ]
8
RomeNYRR

forループ文では、json_arrayの各itemは辞書であり、辞書にはキーstore_detailsがありません。だから私はプログラムを少し修正しました

import json

input_file = open ('stores-small.json')
json_array = json.load(input_file)
store_list = []

for item in json_array:
    store_details = {"name":None, "city":None}
    store_details['name'] = item['name']
    store_details['city'] = item['city']
    store_list.append(store_details)

print(store_list)
13
yash