【发布时间】:2026-01-29 00:55:01
【问题描述】:
我一直在使用 AutoBeans 来映射来自非 GWT-RPC Java 的 Web 服务的 JSON 数据。到目前为止,除了一个映射之外,一切都正常工作。
在服务器端,Class 有一个 Map 类型的属性,其中 MyAbstractParentObject 是大约 15 个不同子类的父类。
当我将它映射到客户端上的相应 AutoBean 接口时,我无法在解码后将 MyAbstractParentObject 向下转换为其子类型。我查看了 GWT 文档和“谷歌”以查看 AutoBeans 是否甚至具有多态支持,但无论哪种方式都无法得到答案。拦截器和类别似乎无法处理这个问题,只是它们希望存在于接口中的方法不是 getter/setter。
我试图使用 JSON 数据中的 type 字段来创建子类的实例,但 AutoBean 不允许我访问原始 JSON,即使在调试器中我可以将其视为称为“数据”的受保护字段。如果我尝试解码原始 bean,它将只有 MyAbstractParentObject 中的字段。
我能看到的唯一选择是:
- 扩展或创建我自己的 AutoBeanCodex 可以正确处理 MyAbstractParentObject 解码 JSON 时的子对象。
- 在 MyAbstractParentObject AutoBean 中找到获取原始 JSON 的方法 并使用它来动态创建子类的实例。
- 切换到其他一些 JSON-GWT 序列化框架,例如 GWTProJSONSerializer 或 piriti。
任何帮助将不胜感激。
【问题讨论】:
标签: java json gwt polymorphism autobean