2014-12-11 208 views
2

可能關注的人,'字典'對象沒有屬性'讀'

什麼是不正確的與我的代碼錯誤?

>>> import json 
>>> array = json.load({"name":"Galen","learning objective":"load json files for data analysis"}) 
Traceback (most recent call last): 
    File "<pyshell#1>", line 1, in <module> 
    array = json.load({"name":"Galen","learning objective":"load json files for data analysis"}) 
    File "C:\Python34\lib\json\__init__.py", line 265, in load 
    return loads(fp.read(), 
AttributeError: 'dict' object has no attribute 'read' 

回答

8

既然你想將它轉換成json格式,你應該使用json.dumps()而不是json.load()。這會工作:

>>> import json 
>>> array = json.dumps({"name":"Galen","learning objective":"load json files for data analysis"}) 
>>> array 
'{"learning objective": "load json files for data analysis", "name": "Galen"}' 

輸出:

>>> a = json.loads(array) 
>>> a["name"] 
u'Galen' 
0

我認爲你是在此之後:

import json 
array = json.dumps({"name":"Galen","learning objective":"load json files for data analysis"}) 
print(array) 

給出:

{"learning objective": "load json files for data analysis", "name": "Galen"} 
0

如果要加載json來自一個字符串,你需要在你的字符串周圍添加引號,並且有一個不同的方法可以從文件或變量中讀取。對於可變它與「s」結尾其他沒有

import json 

my_json = '{"my_json" : "value"}' 

res = json.loads(my_json) 
print res 
0

正如你所說的,這是錯誤的,你忘了'之前和之後的JSON文本。

import json 
array = json.load('{"name":"Galen","learning objective":"load json files for data analysis"}') 

我有同樣的錯誤:)

轉儲的作品,但它是不一樣的。加載更適合解析json。 https://docs.python.org/2/library/json.html