天天看點

python3 json.loads_Python3 json.loads出現奇怪錯誤

我在使用服務api生成JSON響應的web應用程式中使用flask。函數的以下部分工作正常并傳回JSON文本輸出:def get_weather(query = 'london'):

api_url = "http://api.openweathermap.org/data/2.5/weather?q={}&units=metric&appid=XXXXX****2a6eaf86760c"

query = urllib.request.quote(query)

url = api_url.format(query)

response = urllib.request.urlopen(url)

data = response.read()

return data

傳回的輸出是:{"coord":{"lon":-0.13,"lat":51.51},"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04d"}],"base":"cmc stations","main":{"temp":12.95,"pressure":1030,"humidity":68,"temp_min":12.95,"temp_max":12.95,"sea_level":1039.93,"grnd_level":1030},"wind":{"speed":5.11,"deg":279.006},"clouds":{"all":76},"dt":1462290955,"sys":{"message":0.0048,"country":"GB","sunrise":1462249610,"sunset":1462303729},"id":2643743,"name":"London","cod":200}

這意味着data是一個字元串,不是嗎?

但是,注釋return data,然後添加以下兩行:jsonData = json.loads(data)

return jsonData

生成以下錯誤:TypeError: the JSON object must be str, not 'bytes'

怎麼了?data,JSON對象,以前作為字元串傳回!我要知道錯誤在哪裡?