将 javax.json.JsonObject 转换为 jakarta.json.JsonObject 的任何直接方法?
Posted
技术标签:
【中文标题】将 javax.json.JsonObject 转换为 jakarta.json.JsonObject 的任何直接方法?【英文标题】:Any straight forward way to convert javax.json.JsonObject to 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 实例?反之亦然?
【问题讨论】:
【参考方案1】:您要求一种直截了当的方法 - 我认为您的代码有一种通用的数据格式,而您想要理解的格式是:JSON 所以直接的方法是序列化你的数据,然后用另一个解析器解析它。代码行短,可能不是最快得到结果的方式。
另一种选择可能是遍历对象类结构(它是一个层次结构),并且每访问一个步骤,您就可以在另一个模型中构建一个并行的对象层次结构。 你可能需要更多的代码行,但也有机会表现得更好。
【讨论】:
是的,我明白了。我已经使用 JsonReader 类解决了它。但我希望 javax 和 jakarta 实现非常相似(几乎相同)。我一直在寻找某种“技巧”重新打字。 虽然目的相同,用法也差不多,但内部结构不保证兼容。如果您以自己的方式找到解决方案,我相信它更多地基于副作用,并且在这两个库的未来版本中很容易被破解。以上是关于将 javax.json.JsonObject 转换为 jakarta.json.JsonObject 的任何直接方法?的主要内容,如果未能解决你的问题,请参考以下文章