You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flask中解析JSON数据?代码运行问题求助

解决你的JSON数据传输问题

我帮你排查了下代码,问题出在客户端的请求方式上——你直接把字典作为data参数传给requests.post,但这时候requests默认会把数据编码成application/x-www-form-urlencoded格式,而不是JSON,所以Flask服务端的request.is_json会返回False,自然也没法正确解析到JSON数据。

修改后的客户端代码

import requests

url='http://127.0.0.1:8090/postjson'
# 使用json参数自动完成序列化+设置请求头
hj=requests.post(url, json={
    "device":"TemperatureSensor",
    "value":"20",
    "timestamp":"25/01/2017 10:10:05"
})
print(hj.text)

# 也可以手动处理(备选方案)
# import json
# payload = {
#     "device":"TemperatureSensor",
#     "value":"20",
#     "timestamp":"25/01/2017 10:10:05"
# }
# hj = requests.post(url, data=json.dumps(payload), headers={'Content-Type': 'application/json'})
# print(hj.text)

为什么这样改?

  • 用json参数时,requests会自动帮你把字典序列化为JSON字符串,同时自动设置请求头Content-Type: application/json,这样Flask服务端就能正确识别这是JSON请求,request.is_json会返回True,request.get_json()也能拿到完整的JSON数据。
  • 如果选手动处理的方式,需要用json.dumps()把字典转成JSON字符串,同时显式设置请求头告诉服务端数据格式是JSON。

可选优化:让服务端返回JSON响应

如果你想让服务端也返回结构化的JSON响应,可以修改服务端代码:

from flask import Flask, request, jsonify

app = Flask(__name__)
@app.route('/postjson', methods = ['POST'])
def postJsonHandler():
    print(request.is_json)
    content = request.get_json()
    print(content)
    # 返回JSON格式的响应
    return jsonify({"status": "success", "received_data": content}), 200

app.run(port=8090, debug=True)

这样客户端就能拿到更清晰的响应结果,调试起来更方便。

内容的提问来源于stack exchange,提问作者Aaditya Ura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:40:57