Ответ 1
Вы пытаетесь использовать неправильный метод. json.loads
предназначен для загрузки JSON на Python. Если вы хотите конвертировать Python в JSON, вам нужно json.dumps
.
result = json.dumps(response[1])
У меня есть устранение неполадок кода, который использует 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, но это было неудачно.
Любая помощь будет принята с благодарностью.
Вы пытаетесь использовать неправильный метод. json.loads
предназначен для загрузки JSON на Python. Если вы хотите конвертировать Python в JSON, вам нужно json.dumps
.
result = json.dumps(response[1])
Этот dict находится в прямом формате Python, а не в JSON. Вы можете сделать:
import ast
result = ast.literal_eval(response[1])
для чтения в ответе в этом формате. Вы уверены, что Django еще не JSON-декодировал ответ?
У меня есть 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]}]')