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

Spring Boot中使用org.json.JSONObject转POJO为JSON报错求助

问题排查方案

1. 先解决报错与代码的不一致矛盾

报错提示Cannot resolve constructor 'JSONObject(Order)',但你提供的测试代码里明明使用的是Person类,先排查以下几点:

  • 检查测试类Test.java是否实际导入了Order类而非Person,或是代码里误写为Order person = new Order()?
  • 确认Person类的实际类名是否被修改为Order,但贴代码时写错了?
  • 清理IDE缓存(比如IntelliJ的File -> Invalidate Caches...)后重新编译项目,排除缓存导致的识别错误。

2. 确认org.json依赖是否正确引入

Spring Boot默认集成Jackson作为JSON处理库,若要使用org.json.JSONObject,需确保依赖已正确添加到项目配置中:

Maven依赖(pom.xml)

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20240303</version> <!-- 使用最新稳定版 -->
</dependency>

Gradle依赖(build.gradle)

implementation 'org.json:json:20240303'

若依赖未添加或版本过低,会导致找不到支持POJO的构造函数。

3. 验证Person类结构是否符合要求

org.json.JSONObject通过反射读取POJO的getter方法生成JSON,你的Person类已满足基础要求:

  • 是public修饰的类
  • 拥有public无参构造函数(Java默认提供,因未定义其他构造函数)
  • 所有属性都对应public的getter方法

若后续仍有问题,可显式添加无参构造函数尝试:

public Person() {}

4. 排除Spring Boot依赖冲突

Spring Boot的spring-boot-starter-web等依赖可能间接引入其他JSON库,需检查项目依赖树,确保org.json包未被排除或版本被覆盖:

  • Maven:执行mvn dependency:tree查看依赖关系
  • Gradle:执行./gradlew dependencies查看依赖关系
    若存在冲突,可在依赖中排除其他JSON库,或指定org.json的版本优先级。

内容的提问来源于stack exchange,提问作者Kim Gordon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:45:29