2016-07-28 85 views
-1

我試圖用python做一個dict,我嘗試通過url檢索數據,但是json錯誤有什麼問題?我使用Python 2.7.6無法在python中加載url的json文件

import json 
import urllib 

json_string = 'http://localhost/csv/taxo.json' 
parsed_json = json.loads(json_string) 
print(parsed_json['genus']) 

此錯誤

Traceback (most recent call last):
File "dic2.py", line 11, in
parsed_json = json.loads(json_string)
File "/usr/lib/python2.7/json/init.py", line 338, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.7/json/decoder.py", line 384, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

+0

'json.loads'不會下載th e的json文件來自你的url。 –

回答

3

json_string不是json字符串。它只是一個URL ...

你應該得到這個URL的內容與一個可用於Python的HTTP模塊。

你應該反過來做。該requests模塊讓你做一個GET請求,簡單地分析,以Python字典的響應(假定響應是一個有效的JSON)選項:

import requests 

my_dict = requests.get('http://localhost/csv/taxo.json').json() 

如果你想運行此代碼,您需要安裝requests模塊。

1

首先,你需要得到URL的內容,例如與的urllib嘗試某事像這樣,但它不會python3工作:

import json 
import urllib 

json_url = 'http://localhost/csv/taxo.json' 
parsed_json = json.load(urllib.urlopen(json_url)) 
print(parsed_json['genus']) 

你應該記住改變JSON。加載json.load作爲第二個也將執行.read()方法後面的場景,對retrived對象,這是需要正確準備數據。

0

我想你想這樣做:

首先下載網頁:

from urllib import urlopen 
response_object = urlopen('http://localhost/csv/taxo.json') 

轉換爲字符串後:

response_string = response_object.read() 

然後轉換成詞典:

from json import loads 
json_string = loads(response_string)