javax.json.JSONObject.put(String,String) 工作了

问题描述 投票:0回答:2

将字符串列表/集合转换为java中的json对象中提出的解决方案似乎不适用于javax.json。

在 javax.json JSONObject 版本 1.1.4 中,它是类型化

Map<String, JsonValue>
的子类。

因此

    jsonObject.put("key", "value")

会导致错误,因为 put 现在需要一个 Json 对象作为第二个对象。

但是,我没有找到一种简单的方法将简单的 String 转换为 JsonValue。

创建简单 JsonValue 的最佳方法是什么?

华伦斯坦

java json string javax.json
2个回答
1
投票

你错了,

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);

1
投票
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);
© www.soinside.com 2019 - 2024. All rights reserved.