可以通过以下方式将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-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.YassonJsonb
的this PR接口上添加了对此的支持。希望此功能将包含在下一版本的JSON-B规范中。