我正在编写将在GAE外部运行的Java程序,并且我正在使用Google Cloud Java Client for Datastore从数据存储区检索数据。
我需要从数据存储区读取的字段是JSON格式的字符串。因此,实体看起来像{"ID/NAME": ..., "channels": "{MY JSON-FORMAT STRING}"}
。 JSON具有如下结构:
{"type":"a", "channel": {...}}
。我想根据“类型”的值来使该JSON中的嵌套对象“通道”物化。
开始时,我尝试使用GSON来做到这一点。这些步骤将实体读取为JSON对象,检查“类型”,然后使用GSON相应地实例化嵌套对象。但不幸的是,我找不到将Entity读取为JSON对象的方法,也无法将属性“通道”读取为字符串。
我知道Objectify可以帮助我将从数据存储区检索到的实体转换为我自己键入的对象,除了我定义的类需要一个ID / NAME字段以匹配数据库中的实体。但是我只需要实例化嵌套对象,并且我使用的类将取决于JSON中的另一个字段“类型”。
除了使用构造函数手动实例化之外,我想知道是否还有其他方法(我在“通道”中嵌套了对象,希望我自己不需要实例化它们)。