Python调用Java接口失败(Java日志打印警告:JSON parse error:xxxx)
🤟致敬读者
- 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉
📘博主相关
- 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息
文章目录
- Python调用Java接口失败(Java日志打印警告:JSON parse error:xxxx)
- 1. 场景描述
- 2. 问题分析
- 3. 解决方案
- 4. 经验总结
📃文章前言
- 🔷文章均为学习工作中整理的笔记。
- 🔶如有错误请指正,共同学习进步。

Python调用Java接口失败(Java日志打印警告:JSON parse error:xxxx)
1. 场景描述
现有以下Java接口实现:
@RequestMapping(value="addInfo", method=RequestMethod.POST, produces=MediaType.APPLICATION_JSON_VALUE)
public TbInfoEntity addInfo(@RequestHeader("userGroup")String userGroup,@RequestHeader("username")String username,@RequestBody JSONObject requestBody
){// 将JSONObject转换为TbInfoEntity对象TbInfoEntity tie = JSONObject.parseObject(requestBody.toJSONString(), TbInfoEntity.class);// 调用Mapper接口写入数据库tieMapper.insert(tie);return tie;
}
接口访问地址为:
http://127.0.0.1:8089/test/addInfo
对应的Python调用代码如下:
import requests
import json# 构建请求数据
data = {"userId":"001","userAge":"19","userAddr":"shanghai"
}# 设置请求头
headers = {"Content-Type":"application/json","Accept":"application/json","username":"xiuheng","userGroup":"csdn"
}url = "http://127.0.0.1:8089/test/addInfo"
# 调用接口
response = requests.post(url=url, json=data, headers=headers, timeout=30)
执行后出现400错误,Java服务日志显示JSON解析错误。
2. 问题分析
根据错误现象:
- Python端报400错误,提示请求参数问题
- Java服务日志显示JSON解析失败
- 主要关注请求参数中的data部分可能存在格式问题
初步判断问题出在请求参数的传递方式上,尝试修改参数传递方式。
3. 解决方案
修改Python调用代码为以下形式:
import requests
import jsondata = {"userId":"001","userAge":"19","userAddr":"shanghai"
}headers = {"Content-Type":"application/json","Accept":"application/json","username":"xiuheng","userGroup":"csdn"
}url = "http://127.0.0.1:8089/test/addInfo"
# 使用data参数并手动序列化JSON
response = requests.post(url=url, data=json.dumps(data), headers=headers, timeout=30)
修改后调用成功,数据正常写入数据库。
4. 经验总结
Python调用Java接口传递JSONObject类型数据时:
- 建议使用data参数而非json参数
- 必须使用json.dumps()对数据进行序列化处理
- 这样才能确保参数格式符合Java端JSON解析的要求

📜文末寄语
- 🟠关注我,解锁更多优质内容
- 🟡技术前沿 | 实战干货 | 疑难解答,持续更新中
- 🟢加入《全栈知识库》,与各领域开发者共创技术盛宴
- 🔵进入《专属社群》,技术路上结伴同行,共同成长
- 🟣点击下方名片,获取更多精彩内容👇
