使用JSON-B 1.0有效地将JsonObject转换为pojo(例如Yasson,Java EE 8)

问题描述 投票:1回答:1

可以通过以下方式将JsonObject转换为相应的类实例:

Pojo pojo = JsonbBuilder.create().fromJson(jsonObject.toString(), Pojo.class)

但是,使用jsonObject.toString()似乎是低效的,因为String是包含相同信息的其他中间表示。我需要在对象绑定之前转换jsonObject。那么是否有更有效的方法来实现JsonObject的绑定?

(注意我想用Java EE 8标准实现,所以Gson和Jackson不是一个选项,但可能是它的概念)。 Yasson小组目前没有答案,所以希望有人发现这一点。 Michael Schnell也提出了JsonStructure绑定,但目前还没有解决方案。

json jsonp java-ee-8 jsonb-api yasson
1个回答
3
投票

使用JSON-B 1.0标准转换JSON-P对象< - > POJO是不可能的。然而,有足够的人要求它,我们将考虑下一版本的JSON-B。

在此期间,转换为String或使用自定义适配器是您的最佳选择。

如果你担心使用JSON-B的性能,你可以做的第一件事就是缓存Jsonb的实例,即每次你需要调用/ fromJson时不要调用JsonbBuilder.create(),因为所有在创建Jsonb实例时发生注释扫描和类解析。

更新(2019年6月):尽管仍然没有JSON-B标准方法,但JSON-B参考实现Eclipse Yasson已经在org.eclipse.yasson.YassonJsonbthis PR接口上添加了对此的支持。希望此功能将包含在下一版本的JSON-B规范中。

© www.soinside.com 2019 - 2024. All rights reserved.