【python】http post 在body中传递json数据 以发送

  • http post 在body中传递json数据 以发送,json的格式非常重要
  • 这里要传递json对象,而不是一个json字符串

传递post一个 JSON 字符串 是ok的

是的,

bash 复制代码
{"rsource_rhythm_action_list": {"name": "AI_\\u6708\\u4eae\\u6eba\\u6b7b\\u5728\\u7 

这样的内容确实是 JSON 字符串,但要注意它的使用方式。

这个是 JSON 吗?

{"rsource_rhythm_action_list": {"name": "AI_\\u6708\\u4eae\\u6eba\\u6b7b\\u5728\\u7" 是 JSON 格式的数据。

\u6708 这样的 Unicode 转义是合法的,表示 月("月亮"的"月")。

但 关键点在于你如何发送它!

在 HTTP POST 请求中如何传输 JSON?

有两种常见的方式:

✅ 方式 1(正确):直接传 JSON 对象

javascript 复制代码
import requests

data = {
    "rsource_rhythm_action_list": {
        "name": "AI_月亮溺死在爱河"
    }
}

response = requests.post("http://example.com", json=data)  # 传递 JSON 对象

这样是正确的,服务器可以正确解析 JSON 数据。

❌ 方式 2(错误):传 JSON 字符串

如果你手动 json.dumps(data),就变成了 字符串化的 JSON:

javascript 复制代码
import requests
import json

data = {
    "rsource_rhythm_action_list": {
        "name": "AI_月亮溺死在爱河"
    }
}

json_string = json.dumps(data)  # 变成 JSON 字符串
错误做法 1:这样会导致服务器无法正确解析
handlebars 复制代码
response = requests.post("http://example.com", data=json_string) 
错误做法 2:如果你在 json= 里传递字符串,它仍然是字符串
java 复制代码
response = requests.post("http://example.com", json=json_string)

为什么错误?

java 复制代码
json.dumps() 会把 JSON 转换为字符串,结果是:
java 复制代码
"{\"rsource_rhythm_action_list\": {\"name\": \"AI_\\u6708\\u4eae\\u6eba\\u6b7b\\u5728\\u7\"}}"

服务器接收到的其实是:

java 复制代码
"{ \"rsource_rhythm_action_list\": { \"name\": \"AI_月亮溺死在爱河\" } }"
  • 服务器会认为你传入的是一个字符串,而不是一个 JSON 对象,因此 JSON 解析失败。
    🚀 解决方法
java 复制代码
# 正确做法
requests.post("http://example.com", json=data)  # 直接传 JSON 对象

你的问题可能是什么?

你的 JSON 结构是正确的,但可能:

错误地序列化了 JSON(json.dumps())

服务器预期 JSON 对象,但收到的是 JSON 字符串

你是否使用了 data= 而不是 json= 发送请求?

检查方法:

java 复制代码
print(type(data))  # <class 'dict'> 应该是字典
print(type(json.dumps(data)))  # <class 'str'> 变成了字符串

如果你是 str 类型,就要修正为 dict 类型再发送。

总结

最安全的做法是:

java 复制代码
requests.post("http://example.com", json=data)

这样服务器就能正确解析 JSON 数据了!🚀

相关推荐
网安-轩逸2 小时前
回归测试原则:确保软件质量的基石
自动化测试·软件测试·python
Mr_Xuhhh2 小时前
YAML相关
开发语言·python
阿巴~阿巴~2 小时前
JsonCpp:C++ JSON处理利器
linux·网络·c++·json·tcp·序列化和反序列化
咖啡の猫3 小时前
Python中的变量与数据类型
开发语言·python
汤姆yu3 小时前
基于springboot的电子政务服务管理系统
开发语言·python
执笔论英雄3 小时前
【RL】python协程
java·网络·人工智能·python·设计模式
帮帮志4 小时前
【AI大模型对话】流式输出和非流式输出的定义和区别
开发语言·人工智能·python·大模型·anaconda
jquerybootstrap5 小时前
大地2000转经纬度坐标
linux·开发语言·python
Y***89085 小时前
【JAVA进阶篇教学】第十二篇:Java中ReentrantReadWriteLock锁讲解
java·数据库·python
DanB245 小时前
Java(多线程)
java·开发语言·python