将字符串列表/集合转换为java中的json对象中提出的解决方案似乎不适用于javax.json。
在 javax.json JSONObject 版本 1.1.4 中,它是类型化
Map<String, JsonValue>
的子类。
因此
jsonObject.put("key", "value")
会导致错误,因为 put 现在需要一个 Json 对象作为第二个对象。
但是,我没有找到一种简单的方法将简单的 String 转换为 JsonValue。
创建简单 JsonValue 的最佳方法是什么?
华伦斯坦
你错了,
javax.json.JsonObject
已经改变了,这就是它始终以不可变的方式运作的方式。请参阅此处以获取更多参考:https://stackoverflow.com/a/26346341/471160,这是 2014 年的。
由于您引用了有关
jackson
的 SO 问题的链接,因此您可能混合了来自两个不同库的代码。如果您希望像 jsonObject.put("key", "value")
这样的代码可以工作,请使用 jackson:
// com.fasterxml.jackson.core:jackson-core:2.13.3
ObjectMapper mapper = new ObjectMapper();
ObjectNode jsonObject2 = mapper.createObjectNode();
jsonObject2.put("key", "value");
System.out.println(jsonObject2);
或
org.json
// org.json:json:20230227
JSONObject jsonObject = new JSONObject();
jsonObject.put("key", "value");
System.out.println(jsonObject);
javax.json.JSONObject extends Map<String, JsonValue>
因此,您需要将 String 转换为 JsonValue。
试试这个:
JsonObject jsonObject = Json.createObjectBuilder()
.add("key", "yourValue") // "yourValue" will be handled as a JsonValue
.build();
System.out.println(jsonObject);