2014-07-07 63 views
0

我想解析一個Json數組,我得到的數組樣本在下面用我的代碼。解析Json數組的問題

我似乎鍛鍊什麼我的問題,請原諒我的問題不能,如果我已經包含了太多

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
import json 

map = "[{'network' : 'networkA','ycoord' : '73','zcoord' : '-2612','xcoord' : '-4461','owner' : 'PlayerA','name' : 'PlaceA'}, {'network' : 'NetworkB','ycoord' : '66','zcoord' : '-1915','xcoord' : '1156','owner' : 'PlayerB','name' : 'PlaceB'}, {'network' : 'NetWorkB','ycoord' : '71','zcoord' : '3091','xcoord' : '4541','owner' : 'PlayerB','name' : 'PlaceC'}, {'network' : 'NetworkB','ycoord' : '118','zcoord' : '-66','xcoord' : '5','owner' : 'PlayerB','name' : 'PlaceD'}, {'network' : 'networkA','ycoord' : '71','zcoord' : '761','xcoord' : '-248','owner' : 'PlayerA','name' : 'PlaceE'}]" 
data = json.load(map) 
for item in data: 
    print "Network : "+ str(item['network']) 
    print "Name : "+ str(item['name']) 
    print "Owner : "+ str(item['owner']) 
    print "Co ords : ("+ str(item['ycoord']+", "+ str(item['xcoord']+", "+ str(item['Zcoord']+")" 

我得到的錯誤

File "test.py", line 8, in <module> 
    data = json.load(map) 
    File "/usr/lib/python2.7/json/__init__.py", line 274, in load 
    return loads(fp.read(), 
AttributeError: 'str' object has no attribute 'read' 

讀JSON數據(因爲我知道代碼中有什麼不是)

[{ 
    'network' : 'networkA', 
    'ycoord' : '73', 
    'zcoord' : '-2612', 
    'xcoord' : '-4461', 
    'owner' : 'PlayerA', 
    'name' : 'PlaceA' 
}, { 
    'network' : 'NetworkB', 
    'ycoord' : '66', 
    'zcoord' : '-1915', 
    'xcoord' : '1156', 
    'owner' : 'PlayerB', 
    'name' : 'PlaceB' 
}, { 
    'network' : 'NetWorkB', 
    'ycoord' : '71', 
    'zcoord' : '3091', 
    'xcoord' : '4541', 
    'owner' : 'PlayerB', 
    'name' : 'PlaceC' 
}, { 
    'network' : 'NetworkB', 
    'ycoord' : '118', 
    'zcoord' : '-66', 
    'xcoord' : '5', 
    'owner' : 'PlayerB', 
    'name' : 'PlaceD' 
}, { 
    'network' : 'networkA', 
    'ycoord' : '71', 
    'zcoord' : '761', 
    'xcoord' : '-248', 
    'owner' : 'PlayerA', 
    'name' : 'PlaceE' 
}] 

回答

3

你想要loads()而不是load()。閱讀文檔,load()需要一個文件名,loads()需要實際的JSON數據。

+0

那麼如何通過for循環來提取不同的值呢? – user3756607

0

json.load()函數將需要文件名作爲參數。在你的情況下,你不需要文件名,而是一個實際的JSON數組。 使用json.loads()而不是json.load()

另外,請記住函數帶有字符串參數。其他人採取文件 流。這也適用於json.dump()json.dumps()