json - 使用 json.dumps 让 Python Flask 返回 application/json

标签 json python-2.7 flask

我正在使用 Python Flask 创建服务器。我想将 application/json 发送回客户端(我的客户需要这个)。当我使用 json.dumps() 时,它会发回文本。

(如果你想知道,如果我使用 jsonify() 而不是 json.dumps(),我确实得到了 application/json,但是这个函数似乎对某些数据有问题(如果我在这里没有得到解决方案,我会进一步研究 jsonify))。

服务器............

import json
from flask import Flask, render_template, url_for, current_app, request, jsonify

app = Flask(__name__)

@app.route("/<arg1>")
def route1(arg1):
    dict1 = {"prop1": "p1", "prop2": "p2"}
    #return jsonify(dict1)      # this sends 'application/json'
    return json.dumps(dict1)  # this sends ' text/html; charset=utf-8'

app.run(host="0.0.0.0", port=8080, debug=True)

测试客户端(实际客户端由客户提供)......

import pycurl
import cStringIO

SERVER_URL = "http://192.168.47.133:8080"  

buf = cStringIO.StringIO()
c = pycurl.Curl()

c.setopt(c.URL, SERVER_URL + '/index.html?city=perth')
c.setopt(c.HTTPHEADER, ['Accept:application/json']) 
c.setopt(c.WRITEFUNCTION, buf.write)
c.setopt(c.VERBOSE, True)

c.perform()
buf1 = buf.getvalue()
buf.close()

print(buf1)

最佳答案

像这样改变它:

from flask import Response

@app.route("/<arg1>")
def route1(arg1):
    dict1 = {"prop1": "p1", "prop2": "p2"}
    return Response(json.dumps(dict1), mimetype='application/json')

关于json - 使用 json.dumps 让 Python Flask 返回 application/json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25666805/

相关文章:

jquery - 在javascript中解析json字典以迭代键

javascript - 在 Knockout.js 中异步应用绑定(bind)

python - Python 3.3 中的包管理 - 最好使用的工具是什么?

python-2.7 - 使用 Spotipy 设置 Spotify 凭据

python - 禁用 iPython Notebook 自动滚动

python - 在WTForms中使用自定义属性创建selectfield选项

python - 为什么一个简单的减法会导致不同的输出?

javascript - 如何在 Angular2 中显示对象内的对象属性

c# - 在 C# 中使用 Newtonsoft.JSON 努力反序列化 JSON 字符串

python - Flask - SocketIO 隐藏在 Nginx 反向代理后面