Python читает многострочный JSON

Я пытаюсь использовать JSON для хранения настроек для программы. Я не могу заставить Python 2.6 расшифровывать JSON-декодер для декодирования многострочных строк JSON …

Вот пример ввода:

.settings file: """ {\ 'user':'username',\ 'password':'passwd',\ }\ """ 

Я попробовал пару других синтаксисов для этого файла, которые я укажу ниже (с учетом их трассировки).

Мой код python для чтения файла в

 import json settings_text = open(".settings", "r").read() settings = json.loads(settings_text) 

Трассировка для этого:

 Traceback (most recent call last): File "json_test.py", line 4, in <module> print json.loads(text) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/__init__.py", line 307, in loads return _default_decoder.decode(s) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/decoder.py", line 322, in decode raise ValueError(errmsg("Extra data", s, end, len(s))) ValueError: Extra data: line 1 column 2 - line 7 column 1 (char 2 - 41) 

Я предполагаю, что «Дополнительные данные» – это тройная кавычка.

Вот другие синтаксисы, которые я пробовал для файла .settings, с их соответствующими Tracebacks:

 "{\ 'user':'username',\ 'pass':'passwd'\ }" Traceback (most recent call last): File "json_test.py", line 4, in <module> print json.loads(text) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/__init__.py", line 307, in loads return _default_decoder.decode(s) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/decoder.py", line 319, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/decoder.py", line 336, in raw_decode obj, end = self._scanner.iterscan(s, **kw).next() File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/scanner.py", line 55, in iterscan rval, next_pos = action(m, context) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/decoder.py", line 155, in JSONString return scanstring(match.string, match.end(), encoding, strict) ValueError: Invalid \escape: line 1 column 2 (char 2) '{\ "user":"username",\ "pass":"passwd",\ }' Traceback (most recent call last): File "json_test.py", line 4, in <module> print json.loads(text) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/__init__.py", line 307, in loads return _default_decoder.decode(s) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/decoder.py", line 319, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/decoder.py", line 338, in raw_decode raise ValueError("No JSON object could be decoded") ValueError: No JSON object could be decoded 

Если я поместил все настройки в одну строку, он будет декодировать.

3 Solutions collect form web for “Python читает многострочный JSON”

Избавьтесь от всех обратных косых черт и всех «Pythonic», указанных в файле настроек. Отлично работает, если файл просто:

 { "user":"username", "password":"passwd" } 

Заметим также, что строки JSON цитируются с двойными кавычками, а не одинарные кавычки. См. Здесь спецификацию JSON:

http://www.json.org/

 >>> s = """ { "user":"username", "password":"passwd" } """ >>> json.loads(s) {'password': 'passwd', 'user': 'username'} 

json не считает символ \ продолжением строки.

Попробуйте использовать eval (s)

s = "" "{\ 'user': 'username', \ 'password': 'passwd', \ \" ""

сс = Eval (д)

qq {'password': 'passwd', 'user': 'username'}

тип (qq) dict

  • Как обновить JSON-файл с помощью Python?
  • Декодирование вложенного JSON с несколькими циклами for
  • Невозможно десериализовать PyMongo ObjectId от JSON
  • GET вызов curl не возвращает объект JSON
  • Как использовать модуль «json» для чтения в одном объекте JSON за раз?
  • Приложение Flask на pythonanywhere, ошибка декодирования Python JSON
  • В Django loaddata он выдает ошибки для формата json, но правильно работает для формата yaml. Может ли кто-нибудь сказать мне, почему?
  • Как превратить запрос MongoDB в JSON?
  • Python - лучший язык программирования в мире.