1. ホーム
  2. python

[解決済み] JSON要素へのアクセス

2023-04-17 13:53:35

質問

URLから天気予報を取得しています。

weather = urllib2.urlopen('url')
wjson = weather.read()

となっており、私が取得しているのは

{
  "data": {
     "current_condition": [{
        "cloudcover": "0",
        "humidity": "54",
        "observation_time": "08:49 AM",
        "precipMM": "0.0",
        "pressure": "1025",
        "temp_C": "10",
        "temp_F": "50",
        "visibility": "10",
        "weatherCode": "113",
        "weatherDesc": [{
            "value": "Sunny"
        }],
        "weatherIconUrl": [{
            "value": "http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0001_sunny.png"
        }],
        "winddir16Point": "E",
        "winddirDegree": "100",
        "windspeedKmph": "22",
        "windspeedMiles": "14"
    }]        
 }
}

好きな要素にアクセスするにはどうしたらよいでしょうか?

すれば print wjson['data']['current_condition']['temp_C'] というエラーが出ます。

文字列のインデックスは、strではなく、integerでなければなりません。

どのように解決するのですか?

import json
weather = urllib2.urlopen('url')
wjson = weather.read()
wjdata = json.loads(wjson)
print wjdata['data']['current_condition'][0]['temp_C']

URLから得られるのはjson文字列です。そして、あなたはそれを直接indexでパースすることができません。 これをdictに変換する必要があります。 json.loads でdictに変換して、それからindexでパースできるようにします。

を使う代わりに .read() を使ってメモリに保存し、それを読み込んでから json に読み込ませる。 json でファイルから直接読み込むことができます。

wjdata = json.load(urllib2.urlopen('url'))