@DennyD314

Как принять и распарсить json от api платежного агрегатора?

Всем привет!
Не могу никак решить задачу, заключающуюся в том, чтобы принять в POST запросе от API агрегатора JSON и распарсить его.
Делаю так:
Отправляю через CURL следующий запрос:
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X POST -d "{'json':{'data':'here'}}" 127.0.0.1:8000/check/


Представление такое (разбил на части, чтоб в дебаге смотреть) :
one = request.body
        dump = json.dumps(one) // Без этого шага лоадс падает с ошибкой, об отсутствии двойных кавычек
        val = json.loads(dump)
        jsd = val[data]


ДАлее ошибка string indices must be integers

Посмотрел уже пол интернета , и, возможно, две трети Stackoverflow, никак не могу разобраться .
Так как же все таки работать с json, полученным из POST запроса?
  • Вопрос задан
  • 585 просмотров
Решения вопроса 1
FeNUMe
@FeNUMe
Передавайте на вход валидный json(с двойными кавычками) и у вас заработает код:
val = json.loads(request.body)
print(val['json']['data'])

json.dumps() кавычки не исправляет, а просто сериализует входящий объект(в вашем случае строку).

Если же нет возможности исправить входящий формат, то можно сделать так
val = ast.literal_eval(request.body.decode('utf-8'))
print(val['json']['data'])
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@artem78
Можно сделать так:
import requests

json = {'json':{'data':'here'}}
r = requests.post('http://127.0.0.1:8000/check/', json=json)
res = r.json()
print(res)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы