2014-02-17 9 views
0

Я пытаюсь разобрать JSON-файл, который выглядит, как показано ниже:JSON разбора в питон дает ошибку

{ "results": [ 
{ "ID": "63768E9B-1D66-486A-BCDD-D3991EAFBE94", 
"Dt": "2013-08-03T13:01:26.901Z", 
"Dt_u": "2013-08-03T13:01:26.901Z", 
"obj": "enppXhI7TS" 
}, 
{ 
"ID": "63768E9B-1D66-486A-BCDD-D3991EAFBE94", 
"Dt": "2013-08-03T16:17:33.280Z", 
"Dt_u": "2013-08-03T16:17:33.280Z", 
"obj": "79J5z6y2UR" 
}, 
{ 
"ID": "F8B1B9FB-7BCD-47DF-89BD-241440BB6270", 
"Dt": "2013-08-06T00:23:43.562Z", 
"obj": "Xf75BFtx4O", 
"gender": 2, 
"language": "en" 
}]} 

Есть еще много записей в файле

Теперь, когда я пытаюсь загрузить этот файл с помощью JSON Parser в питона, это дает мне

Traceback (most recent call last): 
    File "E:\test.py", line 8, in <module> 
    data = json.dumps(json_data) 
    File "C:\python27\lib\json\__init__.py", line 243, in dumps 
    return _default_encoder.encode(obj) 
File "C:\python27\lib\json\encoder.py", line 207, in encode 
    chunks = self.iterencode(o, _one_shot=True) 
File "C:\python27\lib\json\encoder.py", line 270, in iterencode 
    return _iterencode(o, 0) 
File "C:\python27\lib\json\encoder.py", line 184, in default 
    raise TypeError(repr(o) + " is not JSON serializable") 
TypeError: <open file 'data.json', mode 'r' at 0x00000000022E6540> is not JSON 
serializable 

[Законченный в 0.9s с кодом выхода 1]

Мой код

import json 
from pprint import pprint 


json_data=open('data.json','r') 

data = json.dumps(json_data) 
jsondata = data["results"] 

for item in jsondata: 
name = item.get("ID") 
json_data.close() 

< < < < < < >>>>>>>>>>

import json 
from pprint import pprint 


json_data=open('data.json','r') 

data = json.load(json_data) 
jsondata = data["results"] 

for item in jsondata: 
name = item.get("ID") 
json_data.close() 

Ошибка, что она дает сейчас ->

Traceback (most recent call last): 
    File "E:\test.py", line 7, in <module> 
    data = json.load(json_data) 
    File "C:\python27\lib\json\__init__.py", line 290, in load 
    **kw) 
    File "C:\python27\lib\json\__init__.py", line 338, in loads 
    return _default_decoder.decode(s) 
    File "C:\python27\lib\json\decoder.py", line 365, in decode 
    obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
    File "C:\python27\lib\json\decoder.py", line 381, in raw_decode 
    obj, end = self.scan_once(s, idx) 
UnicodeDecodeError: 'utf8' codec can't decode byte 0xc2 in position 2: invalid continuation byte 
[Finished in 0.2s with exit code 1] 

I знаете, что это связано с некоторыми данными Unicode. но как я могу его идентифицировать и решить?

+0

Что JSON парсер вы говорите? – msvalkon

+0

Вы пропустили запятую после «obj»: «Xf75BFtx4O», это ошибка копирования-вставки? – user3

+0

@msvalkon - Обновлен с кодом. – Neil

ответ

1

Вы пытаетесь выгрузить строку, из которой вы читаете файл. Если это предложение не имеет для вас смысла, это потому, что основная операция бессмысленна. Вместо этого попробуйте json.load().

+0

Я пробовал это. Но теперь это дает мне UnicodeDecodeError. Детали, обновленные в вопросе – Neil

+0

Если у вас есть новый вопрос, тогда откройте новый вопрос. –

+0

Отправленный новый вопрос http://stackoverflow.com/questions/21823792/json-parsing-in-python-gives-error-unicodedecodeerror – Neil

0

Во-первых, это синтаксическая ошибка в данных, вставленных вами. Отсутствует одна запятая в конце строки 17.

Во-вторых, вам нужно вызвать json.load (json_data), чтобы загрузить json из файла.

0

Во-первых, нет никаких ключей с именем seniorID, второй вам нужно использовать json.load(json_data)

+0

Обновлен ключ и json.load – Neil

Смежные вопросы