Ошибка в json.loads () для данных, к которым применено декодирование base64 - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь использовать json.loads () в python

Я получаю ошибку:

объект JSON должен быть str, а не 'bytes'

a = {'h': '123', 'w': '12345', 'data': "b'eyJod2lkIjpwomfcwpvepovnepovqrepniLLKJAMSNDMSNDMAWEFMOEDAad='"}


a.update(json.loads(base64.b64decode(a['data'])))

Здесь часть «data» была загружена как json-дамп с b64encoding.

'data':base64.b64encode(json.dumps(test).encode()); where test = some string eg('epovqrepniLLKJAMSNDMSNDMAWEFMOEDAad=')

Я попытался использовать:

a.update(json.loads(base64.b64decode(a['data']).decode('utf-8')))

Дав мне Кодек utf-8 не может декодировать байты в позиции: недопустимый байт продолжения

Я также пытался использовать decodebytes вместо b64decode безрезультатно.

Буду очень признателен за любую помощь!

1 Ответ

0 голосов
/ 07 июня 2018

Спасибо всем за вашу помощь.

После долгих поисков в Stackoverflow в сочетании с тестированием на моей локальной машине я смог перейти к этому.

Объект (a['data'])то, что передавалось, имело некоторые значения, которые не могли быть расшифрованы как utf-8.

Это было в форме b'xxxsknoen'

Я закончил тем, что удалил b и кавычки в начале и в конце, а затем преобразовал его в str.

var = base64.b64decode(str(a['data'])[2:-1]).decode('utf-8')
a.update(json.loads(var))
...