2013-07-18 4 views
1

У меня есть большой JSON документ, сохраненный в формате довольно-печати в файл, где файл выглядит как:Загрузить довольно печатный JSON из файла в python?

$ nano data.json 

{ 
"type" : "object", 
"properties" : { 
    "price" : {"type" : "number"}, 
    "name" : {"type" : "string"}, 
    }, 
} 

Традиционные способы, которые я нашел для чтения таких JSon файлов, таких как ...

with open('data.json', 'r') as handle: 
    data = json.load(handle) 

и ...

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

и ...

data = [] 
with open('data.json') as f: 
    for line in f: 
     data.append(json.loads(line)) 

и ...

ss = '' 
with open('data.json', 'r') as f: 
    for line in f: 
     ss += ''.join(line.strip()) 

data = json.loads(ss.decode("utf-8","replace")) 

... кажется, работать только для одной струны, не очень-печати отформатированного JSON.

Как загрузить JSON этого формата из файла? Ошибки я получаю при попытке эти форматы ...

Traceback (most recent call last): 
    File "<stdin>", line 7, in <module> 
    File "/usr/lib/python2.7/json/__init__.py", line 326, in loads 
    return _default_decoder.decode(s) 
    File "/usr/lib/python2.7/json/decoder.py", line 366, in decode 
    obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
    File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode 
    obj, end = self.scan_once(s, idx) 
ValueError: Expecting , delimiter: line 1 column 250 (char 250) 

ValueError: Expecting , delimiter: line 9 column 13 (char 310) 
+0

У вас есть недействительный JSON; там должна быть * not * запятая. Симпатичная печать здесь не проблема. –

+0

Действительно? Я вытащил этот json из документации jsonschema: https://pypi.python.org/pypi/jsonschema У них есть запятая. – Mittenchops

+4

Они определяют словарь ** python **, где запятая в порядке. Python и JSON могут выглядеть одинаково, но это не одно и то же. –

ответ

1

Для кого-либо еще найти это в будущем прибегая к помощи вещи, похожие на то, что я сделал, когда я это --- Вы можете думать, ваша ошибка в но моя, как указано выше, была фактически в самом JSON, а не в загрузке (как указывал Мартийн Питерс). Я копировал схему из проекта jsonschema python --- но, оказалось, это был не JSON, а обманчиво похожий на вид словарь python.

+0

У меня возникла одна и та же проблема: у меня были одинарные кавычки, а не двойные кавычки (продолжайте забывать об этом) и что-то подобное. – antonavy

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

  • Нет связанных вопросов^_^