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

如何在JsonObject的add方法中使用Boolean类型并解决类型转换报错

你遇到的类型转换报错核心有两个可能的触发原因:

  1. 你使用的javax.json版本低于1.1,该版本之前的JsonObjectBuilder没有提供直接接收boolean原生类型参数的add重载方法,传入的布尔值会被错误序列化,触发类型转换异常
  2. 你后续读取JSON字段时,错误地用getString()方法读取布尔类型字段,也会触发该报错

兼容所有版本的标准构造方案

直接使用JSON API内置的布尔常量构造,不需要依赖版本支持原生布尔入参:

import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonValue;

public class BuildJson {
    public static void main(String[] args) {
        JsonObject json = Json.createObjectBuilder()
                .add("type", "AAA")
                // 布尔真值用JsonValue.TRUE,假值用JsonValue.FALSE
                .add("isForm", JsonValue.TRUE)
                .build();
        // 验证输出
        System.out.println(json);
    }
}

取值注意事项

读取布尔字段时必须调用对应类型的方法,不能用字符串取值方法:

// 正确写法
boolean isForm = json.getBoolean("isForm");
// 错误写法,会触发你遇到的类型转换报错
// String isForm = json.getString("isForm");

高版本API简化写法

如果升级javax.json依赖到1.1及以上版本,可以直接传入原生布尔值构造:

<!-- Maven依赖参考 -->
<dependency>
    <groupId>javax.json</groupId>
    <artifactId>javax.json-api</artifactId>
    <version>1.1.4</version>
</dependency>
<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.json</artifactId>
    <version>1.1.4</version>
    <scope>runtime</scope>
</dependency>

升级后你原来的构造代码可以直接正常运行:

JsonObject json = Json.createObjectBuilder()
    .add("type", "AAA")
    .add("isForm", true)
    .build();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:57:03