flask中只有用jsonify传递的json数据才能被浏览器识别,其他json模块传出json数据不能被识别?

问题:

在使用flask,向前端传json数据时,发现只有用jsonify模块传出的json数据才能被识别,其他的都不行。

表现

火狐会把json进行格式化处理。

其他json模块

利用自带的及simplejson等json模块封装json数据,传给火狐,并没有识别为json数据。
服务端代码:

 return simplejson.dumps(
        {
            'code': 0,
            'msg': 'haha',
            'count': len(data),
            'data': data  # [convert_to_builtin_type(d) for d in rs]
        }
    )

如图:
json不能被识别

响应头信息:
显示这是文本数据。
响应头信息

jsonify模块

代码:

rs = ({
        'code': 0,
        'msg': 'haha',
        'count': len(data),
    })
    return jsonify(rs)

浏览器可以识别:
图片描述

响应头
content-type类型变成了json
图片描述

不能识别为json,就无法使用jq等前端工具对数据处理。我试过了的。

阅读 5.8k
3 个回答

自己设置响应头信息:
return simplejson.dumps({xxx}), 200, {'Content-Type': 'application/json'}

jsonify封装的内部指定了content_type为application/json(mimetype参数)。

用其他的你要手动设定响应的类型为content_type为application/json, jsonify因为是flask自带的所以内部设置了响应类型

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题