Сжатие списка json в Gzip с использованием файлового объекта - PullRequest
0 голосов
/ 07 апреля 2020

Мне нужно сжать список словарей с помощью gzip и отправить в качестве параметра запроса в бэкэнд-API. При использовании библиотеки gzip я не смог отправить json, потому что каждый раз получал неверный запрос от сервера. Вот пример данных:

[{'name':'John'}, {'name': 'Clark'}]

Сначала я попытался использовать версию 1 кода ниже, но я всегда получаю

TypeError: ожидается строковый аргумент, получил ' bytes '

Итак, я попробовал версию 2, которая возвращает неверный запрос. Есть другой аналогичный ответ, но мне нужно сделать это с файловым объектом. Не могли бы вы указать, где я иду не так?

Версия 1

import gzip 
import json
import io

inp1 = {"name": "John"}
inp2 = {"name": "Clark"}
final_inp = []
final_inp.append(inp1)
final_inp.append(inp2)
print(final_inp)

data = json.dumps(final_inp)
out = io.StringIO()
with gzip.GzipFile(fileobj=out, mode="w") as f:
    f.write(data)
    res = out.getvalue()

print(res)

Версия 2

# same imports and declartion from version 1
# this code works but i have to do it using version 1.
data = json.dumps(final_inp)
out = io.BytesIO()
with gzip.GzipFile(fileobj=out, mode="wb") as f:
    f.write(data.encode())
    res = out.getvalue()

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