【问题标题】:Any straight forward way to convert javax.json.JsonObject to jakarta.json.JsonObject?将 javax.json.JsonObject 转换为 jakarta.json.JsonObject 的任何直接方法?
【发布时间】:2021-07-13 11:08:22
【问题描述】:

在启动新的 Jakarta (9) 项目时,我需要使用“javax”JSON-P API 处理旧的(遗留库和模块)。通常我们以这个错误结束:

java:不兼容的类型:jakarta.json.JsonObject 无法转换 到 javax.json.JsonObject

不幸的是,旧代码使用了各种 javax.json.* 类,尤其是 JsonObjects,它们在新模块的方法中不可用(因为它们使用的是 jakarta.json.JsonObject)。 我们通过从第一个 JsonObject 生成字符串来解决这个问题。然后我们将它反序列化到另一个类实例中,但是有没有其他更直接的方法来“重新键入”或将旧的 javax JsonObject 实例转换为新的 jakarta 实例?反之亦然?

【问题讨论】:

    标签: java json jakarta-ee types jsonp


    【解决方案1】:

    您要求一种直截了当的方法 - 我认为您的代码有一种通用的数据格式,而您想要理解的格式是:JSON 所以直接的方法是序列化你的数据,然后用另一个解析器解析它。代码行短,可能不是最快得到结果的方式。

    另一种选择可能是遍历对象类结构(它是一个层次结构),并且每访问一个步骤,您就可以在另一个模型中构建一个并行的对象层次结构。 你可能需要更多的代码行,但也有机会表现得更好。

    【讨论】:

    • 是的,我明白了。我已经使用 JsonReader 类解决了它。但我希望 javax 和 jakarta 实现非常相似(几乎相同)。我一直在寻找某种“技巧”重新打字。
    • 虽然目的相同,用法也差不多,但内部结构不保证兼容。如果您以自己的方式找到解决方案,我相信它更多地基于副作用,并且在这两个库的未来版本中很容易被破解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 2016-12-21
    • 1970-01-01
    • 2011-06-14
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多