2014-07-07 3 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()은 파일 이름을 취하고 loads()은 실제 JSON 데이터를 사용합니다.

+0

그래서 for 루프를 통해 다른 값을 추출하려면 어떻게해야합니까? – user3756607

0

json.load() 함수에는 매개 변수로 filename이 필요합니다. 귀하의 경우에는 파일 이름이 아니라 실제 JSON 배열이 필요합니다. json.load() 대신 json.loads()을 사용하십시오.

또한, s가있는 함수는 문자열 매개 변수를 사용합니다. 다른 사람들은 파일 스트림을 가져옵니다. 이는 json.dump()json.dumps()에도 적용됩니다.