Как вернуть знак евро через jsonify (Flask)?

from flask import Flask,jsonify
app = Flask(__name__)
@app.route('/')
def default():
	return jsonify(a=(u"\u20AC").encode('utf8'))

if __name__ == "__main__":
    app.run(debug=True,port=8765)

В ответе нет символа евро, а unicode string
Как вернуть знак евро через jsonify (Flask)?
  • Вопрос задан
  • 1651 просмотр
Решения вопроса 1
@pcdesign
from flask import Flask, jsonify
app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False


@app.route('/')
def default():
    result = u"\u20AC"
    return jsonify(result=result), 200, {'Content-Type': 'text/css; charset=utf-8'}

if __name__ == "__main__":
    app.run(debug=True, port=8767, host='0.0.0.0')


1ac73f5e707649c18e7b68b331b823c1.png
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Revencu
@Revencu Автор вопроса
from flask import Flask,jsonify
app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False

@app.route('/')
def default():
	return jsonify(a=u"\u20AC".encode('utf8'))

if __name__ == "__main__":
    app.run(debug=True,port=8765)

Вот что получилось:
cf84754aed50468386b405baa65d4cac.jpg
Ответ написан
Arceny
@Arceny
json.py
# -*- coding: utf-8 -*-
try:
    from itsdangerous import simplejson as _json
except ImportError:
    from itsdangerous import json as _json
from flask import request
from datetime import datetime
from bson.objectid import ObjectId, InvalidId
from flask.json import dumps
from flask.globals import current_app


class UniversalJSONEncoder(_json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, datetime):
            return obj.isoformat()
        if isinstance(obj, ObjectId):
            return str(obj)
        return super(UniversalJSONEncoder, self).default(obj)


def unicode_jsonify(*args, **kwargs):
    indent = None
    if current_app.config['JSONIFY_PRETTYPRINT_REGULAR'] and not request.is_xhr:
        indent = 2
    return current_app.response_class(dumps(dict(*args, **kwargs), indent=indent),
                                      mimetype='application/json; charset=utf-8')


app.py
from flask import Response, Flask, Blueprint, abort, request
from .json import unicode_jsonify as jsonify, UniversalJSONEncoder

app = Flask(__name__)
app.json_encoder = UniversalJSONEncoder
app.config['JSON_AS_ASCII'] = False


usage
jsonify({'message': 'Привет, мир'})
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
УБРиР Екатеринбург
от 72 800 до 72 800 ₽
OWNR SOLUTIONS Нижний Новгород
от 250 000 до 330 000 ₽