Python调用Java接口失败(Java日志打印警告:JSON parse error:xxxx)的解决方案

 更新时间:2025年11月13日 08:56:31   作者:岫珩  
文章描述了Python调用Java接口时遇到400错误和JSON解析错误的问题,通过分析问题发现参数传递方式可能存在问题,修改Python代码使用data参数并序列化数据后,问题解决,文章总结了在Python调用Java接口传递JSONObject数据时的注意事项,需要的朋友可以参考下

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 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"
# 使用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解析的要求

以上就是Python调用Java接口失败(Java日志打印警告:JSON parse error:xxxx)的解决方案的详细内容,更多关于Python调用Java接口失败的资料请关注脚本之家其它相关文章!

相关文章

  • Python跑循环时内存泄露的解决方法

    Python跑循环时内存泄露的解决方法

    这篇文章主要介绍了Python跑循环时内存泄露的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • Python multiprocessing 进程间通信方式实现

    Python multiprocessing 进程间通信方式实现

    本文主要介绍了Python multiprocessing 进程间通信方式实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Python 之pandas库的安装及库安装方法小结

    Python 之pandas库的安装及库安装方法小结

    Pandas 是一种开源的、易于使用的数据结构和Python编程语言的数据分析工具,它与 Scikit-learn 两个模块几乎提供了数据科学家所需的全部工具,今天通过本文给大家介绍Python 之pandas库的安装及库安装方法小结,感兴趣的朋友跟随小编一起看看吧
    2022-11-11
  • python单例模式实例解析

    python单例模式实例解析

    这篇文章主要为大家详细介绍了python单例模式实例的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • python Django实战之歌曲搜索功能实现

    python Django实战之歌曲搜索功能实现

    这篇文章主要为大家详细介绍了如何利用python Django实现歌曲搜索功能,文中的示例代码讲解详细,具有一定的参考价值,有需要的小伙伴开业了解下
    2023-10-10
  • Selenium(Python web测试工具)基本用法详解

    Selenium(Python web测试工具)基本用法详解

    这篇文章主要介绍了Selenium(Python web测试工具)基本用法,结合实例形式分析了Selenium的基本安装、简单使用方法及相关操作技巧,需要的朋友可以参考下
    2018-08-08
  • 详解Python数据分析--Pandas知识点

    详解Python数据分析--Pandas知识点

    这篇文章主要介绍了Python数据分析--Pandas知识点,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • python 工具 字符串转numpy浮点数组的实现

    python 工具 字符串转numpy浮点数组的实现

    这篇文章主要介绍了python 工具 字符串转numpy浮点数组的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • 简单了解python中的与或非运算

    简单了解python中的与或非运算

    这篇文章主要介绍了简单了解python中的与或非运算,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Python突破多线程限制GIL问题的4种实战解法

    Python突破多线程限制GIL问题的4种实战解法

    GIL(全局解释器锁)是CPython解释器的核心特性,其本质是“同一时刻仅允许一个线程执行Python字节码”,这直接导致Python多线程在CPU密集型任务中无法利用多核优势,本文整理了4种实战解法,大家可以根据需要进行选择
    2025-12-12

最新评论