@nemolayn
Создатель бота Nemo

Как передать в ответе utf-8 но при этом что бы оставалась и часть json?

У меня есть код:
def fil(method):
    if method == "censure":
        if request.method == 'POST':
            json = request.json
            if 'access_token' in json and json['access_token'] == "bi83xs.T.ajdsjckfjs03@34095":
                if 'text' in json and 'lang' in json: 
                    check_res = check_censur(json['text'], json['lang'])
                    print(check_res[1])
                    res = { "response": {  "checkable_text": json['text'], "matches": [ check_res[1] ] }}
                    return res
                else: 
                    err = { "error": { "error_code": 3, "error_text": "One of parametr is empty or invalid (lang, text)" } }
                    return err
            else:
                if not 'access_token' in json:
                    errr = { "error": { "error_code": 4, "error_msg": "User authorization failed: no access_token passed" } }
                else:
                    errr = { "error": { "error_code": 5, "error_msg": "User authorization failed: invalid access_token" } }
                return errr
        else:
            err = { "error": { "error_code": 2, "error_msg": "Your method is not allowed! Use POST!"} }
            return err
    else:
        err = { "error": { "error_code": 404, "error_msg": "Unknown method" } }
        return err

При запросе:
POST http://127.0.0.1:5000/devtools/censure
content-type: application/json;
{
    "access_token": "bi83xs.T.ajdsjckfjs03@34095",
    "text": "тут плохое слово",
    "lang": "ru"
}

Возвращается строка:
{
  "response": {
    "checkable_text": "\u0435\u0431\u043b\u0430\u043d",
    "matches": [
      "\u0435\u0431\u043b\u0430\u043d"
    ]
  }
}
  • Вопрос задан
  • 75 просмотров
Решения вопроса 2
@Everything_is_bad
можешь не париться, у тебя все ок, просто non-ASCII выведены кодами, читай например про ensure_ascii в https://docs.python.org/3/library/json.html#json.dump.
А, ну и почитай как избавляться от такой вложенность if.
Ответ написан
Комментировать
@nemolayn Автор вопроса
Создатель бота Nemo
Решение: (спасибо чуваку из 2 ответа)
import json as jsonif

res = { "response": {  "checkable_text": json['text'], "matches": [ check_res[1] ] }}
res = jsonif.dumps(res, ensure_ascii=False)
return Response(res, content_type="application/json")
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы