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

javax.json的JSONObject.put(String,String)失效,如何转字符串为JsonValue?

在javax.json 1.1.4中将普通字符串转为JsonValue的最优实现方式

1. 最直接的字符串转JsonValue方法

javax.json提供了Json工具类的静态工厂方法createValue(String),可以一键把普通字符串转为JsonValue实例,代码示例:

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

// 普通字符串转JsonValue
JsonValue strJsonValue = Json.createValue("需要转换的字符串");

2. 构建JsonObject时无需手动转换

如果你的目标是把字符串存入JsonObject,完全不需要手动转JsonValue——JsonObjectBuilder的add(String key, String value)重载方法会自动完成转换,这也是官方推荐的JsonObject构建方式(因为JsonObject本身是不可变对象,直接调用put()不仅会因参数类型报错,还会抛出UnsupportedOperationException)。示例:

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

JsonObject jsonObject = Json.createObjectBuilder()
        .add("nickname", "黑铁玩家")
        .add("signature", "菜但爱玩")
        .build();

3. 修改已有JsonObject的正确姿势

由于javax.json的JsonObject是不可变对象,不能直接调用put()修改。如果要基于已有JsonObject扩展内容,需要通过原对象创建新的JsonObjectBuilder:

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

// 假设已有一个JsonObject
JsonObject originalObj = Json.createObjectBuilder().add("age", "20").build();

// 基于原对象构建新的JsonObject
JsonObject updatedObj = Json.createObjectBuilder(originalObj)
        .add("hobby", "打游戏")
        .build();

4. 批量转换字符串集合为Json数组

如果要处理字符串列表/集合,可以结合流操作批量转换:

import javax.json.Json;
import javax.json.JsonArray;
import java.util.List;

List<String> gameList = List.of("原神", "星穹铁道", "崩坏3");
JsonArray gameJsonArray = Json.createArrayBuilder()
        .addAll(gameList.stream().map(Json::createValue))
        .build();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:56:02