Python string json.loads error - PullRequest
       1

Python string json.loads error

0 голосов
/ 07 марта 2012

Какая разница между:

  1. s1 = '["a"]'

  2. s2 = "['a']"

Когда я делаю json.loads, я получаю следующую ошибку для s2, но s1 в порядке:

>>> s1='["a2"]'
>>> s2="['a2']"
>>> json.loads(s1)
[u'a2']
>>> json.loads(s2)
 raise ValueError("No JSON object could be decoded")
 ValueError: No JSON object could be decoded

Ответы [ 2 ]

7 голосов
/ 07 марта 2012

Проблема заключается в JSON использует двойные кавычки (") для цитирования значений , а не одиночные (').

Это означает, что исключение выдается из-за недопустимого JSON:

  • это недопустимый JSON: ['a']
  • это верный JSON: ["a"]

Также ниже приведен правильный пример, отличный оттвое:

>>> import json
>>> s1 = "['a']"
>>> s2 = '["a"]'
>>> json.loads(s1)
... some traceback removed ...
ValueError: No JSON object could be decoded
>>> json.loads(s2)
[u'a']

РЕДАКТИРОВАТЬ : я обновил вопрос с правильным выводом, который должен был видеть OP вместо того, что он / она отправили (json.loads('["a2"]') не выдавал ошибок, json.loads("['a2']") был).

3 голосов
/ 07 марта 2012

JSON-кавычки не являются взаимозаменяемыми, как в Python.

>>> import json
>>> print json.dumps("['a']")
"['a']"
>>> print json.dumps('["a"]')
"[\"a\"]"

Во втором случае " необходимо экранировать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...