我想把json数据输入utf-8

我有一张my_list = []人的名单

然后,许多人将Unicode值附加到列表中,如下所示

my_list.append(u'ტესტ')

return jsonify(result=my_list)

然后它就会变得

{
"result": [
"\u10e2\u10d4\u10e1\u10e2",
"\u10e2\u10dd\u10db\u10d0\u10e8\u10d5\u10d8\u10da\u10d8"
]
}

推荐答案

Use the standard-library json module instead, and set the ensure_ascii keyword parameter to False when encoding, or do the same with flask.json.dumps():

>>> data = u'\u10e2\u10d4\u10e1\u10e2'
>>> import json
>>> json.dumps(data)
'"\\u10e2\\u10d4\\u10e1\\u10e2"'
>>> json.dumps(data, ensure_ascii=False)
u'"\u10e2\u10d4\u10e1\u10e2"'
>>> print json.dumps(data, ensure_ascii=False)
"ტესტ"
>>> json.dumps(data, ensure_ascii=False).encode('utf8')
'"\xe1\x83\xa2\xe1\x83\x94\xe1\x83\xa1\xe1\x83\xa2"'

注意,仍然需要将结果显式编码为UTF8,因为在这种情况下,dumps()函数返回unicode对象.

您可以在Flask应用程序配置中将其设为默认值(并再次使用jsonify()).

WARNING:不要在JSON中包含不是ASCII安全的不受信任的数据,然后插入HTML模板或在JSONP API中使用,因为这样可能会导致语法错误或打开跨站点脚本漏洞.这是因为JSON is not a strict subset of Javascript,当禁用ASCII安全编码时,U+2028和U+2029分隔符将不会转义为\u2028\u2029序列.

Json相关问答推荐

如何抓住引号之间的第二次出现?

使用相同的密钥值来命名Json并使用Jolt重命名密钥

PowerShell脚本-替换json数组(转义$var将被视为不带双引号的文本)

如何使用PlayWriter循环访问JSON对象

在PowerShell中,如何获取数据对所在的JSON对象的名称

使用Jolt v.0.1.1向每个json元素添加一个键-值对

使用快速json库编写json可以消除所有缩进

合并2个嵌套词典

使用 JOLT 将日期格式转换为 JSON

当 JSON 字段名称有空格时,ABAP 中的 JSON 反序列化

使用 SwiftUI 在 API 调用中解码嵌套 JSON 响应时遇到问题

如何在生产环境中更改 Flutter 应用程序中的数据模型?

在PowerShell中按时间戳过滤JSON

将嵌套的 JSON 对象规范化为 Pandas 数据框

应该使用什么标头将 GZIP 压缩 JSON 从 Android 客户端发送到服务器?

从 HttpResponse 获取 json

我应该如何处理 JSON 中的 HATEOAS 链接和引用?

嵌套 JSON:如何向对象添加(推送)新项目?

如何在 Django JSONField 数据上聚合(最小/最大等)?

如何使用 Javascript 将数据写入 JSON 文件