2013-11-07 3 views
1

Я следующий файл с именем Python exampleData.json:декодирования JSON в Python

[ 
    { 
    "startTime" : 1383790636.261329, 
    "confidence" : 2, 
    "type" : 3, 
    "startTime2" : "2013-11-06 21:17:16.261", 
    "duration" : 4.287207 
    }, 
    { 
    "startTime" : 1383790640.548536, 
    "confidence" : 2, 
    "type" : 3, 
    "startTime2" : "2013-11-06 21:17:20.549", 
    "duration" : 3.674701 
    }, 
    { 
    "startTime" : 1383790644.223238, 
    "confidence" : 2, 
    "type" : 3, 
    "startTime2" : "2013-11-06 21:17:24.223", 
    "duration" : 7.35066 
    } 
] 

(Фактический файл имеет около 1000 блоков, я только что вставил 3 здесь). Я проверил весь файл JSON с помощью jsonlint.com, и он действительно JSON.

Я пытаюсь запустить следующую программу под названием jsonGraph.py для ввода кода в Python:

import json 
import pprint 

data = [] 
with open('D:/Users/Vik/Downloads/exampleData.json') as data_file: 
    for line in data_file: 
     data.append(json.loads(line)) 

Проблема заключается в том, когда я пытаюсь запустить программу, я получаю следующую ошибку:

D:\Users\Name>py D:\Users\Name\Downloads\jsonGraph.py 
Traceback (most recent call last): 
    File "D:\Users\Name\Downloads\jsonGraph.py", line 7, in <module> 
    data.append(json.loads(line)) 
    File "D:\Python33\lib\json\__init__.py", line 319, in loads 
    return _default_decoder.decode(s) 
    File "D:\Python33\lib\json\decoder.py", line 352, in decode 
    obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
    File "D:\Python33\lib\json\decoder.py", line 368, in raw_decode 
    obj, end = self.scan_once(s, idx) 
ValueError: Expecting object: line 1 column 2 (char 1) 

Любые идеи относительно того, что вызывает эту ошибку?

У меня есть сообщение об ошибке, и на этом сайте есть похожие сообщения с похожими ошибками, но этот вопрос уникален по двум причинам: 1. они были вызваны использованием недействительного кода JSON, а мой действителен и 2. Это несколько другое сообщение об ошибке. Я также проверил документацию на python и не нашел никакой информации.

+0

Технически это недействительно JSON, если верхний уровень представляет собой массив - он должен быть объектом. – agf

ответ

2

У вас есть один большой объект JSON. Разобрать его в одном с json.load():

import json 

with open('D:/Users/Vik/Downloads/exampleData.json') as data_file: 
    data = json.load(data_file) 

Ваш код пытается лечить в каждой строке в качестве значения JSON; это не сработает, потому что [ (первая строка) не является полным значением JSON и не будет сочетать следующие несколько строк.

+0

Это устранило ошибку. – user2826735

3

Если файл указан так, как вы указали, вы не загружаете его по строкам, вам нужно загрузить весь файл.

+0

Это устранило ошибку. – user2826735

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