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
相关产品推荐
相关产品推荐

