Подтвердить что ты не робот

Python запрещает JSON через json.loads:

У меня есть устранение неполадок кода, который использует HTTP POST для отправки данных и должен возвращать результат JSON, содержимое которого является словарем. Я использую обертку XML-RPC, чтобы открыть эту службу. Когда обертка получает информацию о dict из переменной ответа http, содержимое dict содержит строку в этой форме:

{'created': datetime.datetime(2010, 12, 31, 19, 13, 8, 379909), 'worker': u'GoogleWorker', 'ready': False, 'request_id': '8f1381853a444a42a37ae5152a3af947', 'owner': u'admin', 'shortname': u'test19'}

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

result = json.loads(response[1])

Однако, когда я пытаюсь использовать json.loads для преобразования данных в JSON, я получаю следующую ошибку: Fault: <Fault 1: "<type 'exceptions.ValueError'>:Expecting property name: line 1 column 1 (char 1)">

Я вручную попытался преобразовать указанную выше строку в JSON, но я получаю ту же ошибку. Является ли диктовка некорректным? Это связано с юникодом? Я также попытался установить локаль в UTF-8, но это было неудачно.

Любая помощь будет принята с благодарностью.

4b9b3361

Ответ 1

Вы пытаетесь использовать неправильный метод. json.loads предназначен для загрузки JSON на Python. Если вы хотите конвертировать Python в JSON, вам нужно json.dumps.

result = json.dumps(response[1])

Ответ 2

Этот dict находится в прямом формате Python, а не в JSON. Вы можете сделать:

import ast
result = ast.literal_eval(response[1])

для чтения в ответе в этом формате. Вы уверены, что Django еще не JSON-декодировал ответ?

Ответ 3

У меня есть json на django, я использую это:

import simplejson as json
#to encode
final= {'first':first_data,'second':second_data}
json.dumps(final)
#to decode this is the example from python api 
json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')