我想将Retrofit和GreenDao结合起来,但是嵌套Json-Objects出现了问题.我的嵌套字段保持为空.
这是Json DataStructure
[ { "ID": 1, "street": "Streetname", "zipcode": 12345, "city": "MyCity", "phone_number": "+123456789", "position": "12.0000, 9.0000", "company": { "Title": "Companyname", "group": { "Title": "Groupname" } } }]
我的DaoGenerator看起来像这样
Entity customItem = schema.addEntity("CustomItems"); customItem.addIDproperty(); customItem.addStringProperty("street"); customItem.addIntProperty("zipcode"); customItem.addStringProperty("city"); customItem.addStringProperty("phone_number"); customItem.addStringProperty("position"); Entity company = schema.addEntity("Company"); company.addIDproperty(); company.addStringProperty("Title"); Entity group = schema.addEntity("Group"); group.addIDproperty(); group.addStringProperty("Title"); Property companyPropID = customItem.addLongProperty("companyID").notNull().getproperty(); customItem.addToOne(company, companyPropID); Property groupPropID = company.addLongProperty("groupID").notNull().getproperty(); company.addToOne(group, groupPropID);
我的问题是customItem.getCompany()返回null,但“ ID”到“ position”的值很好.我不确定问题是什么,因为我的CustomItem类包含该成员
private Company company;
和公司的设置者,我看不到任何错字.
public voID setCompany(Company company) { if (company == null) { throw new DaoException("To-one property 'companyID' has not-null constraint; cannot set to-one to null"); } synchronized (this) { this.company = company; companyID = company.getID(); company__resolvedKey = companyID; }}
解决方法:
我可以运行它,但是有多个问题.
1)当我想保留CustomItem,Company和Group时,我遇到的问题是,getter getCompany()和getGroup()返回null,因为它们不直接返回成员而是从数据库中获取成员.因此,我在生成的CustomItem实体类中添加了一个吸气剂,它仅返回公司成员.现在,我可以将公司插入数据库.吸气剂看起来像这样:
// KEEP METHODS - put your custom methods herepublic Company getCompanyLocal() { return company;}// KEEP METHODS END
公司和集团也一样.但是还有另一个问题…
2)第二个问题是实体“ Group”,因为“ group”是保留的sql关键字.我看到了一个解决方案和针对此问题的错误解决方法:
>好方法是将Json数据从“组”更改为“ business_group”,并根据此更改您的DAO.做完了
>不好的解决方法,如果您处于与我一样的情况,无法更改Json,则可以执行以下 *** 作.我根本不坚持这个小组,但是可以通过公司访问它.它以某种方式出现在这里.因此,像上面的CustomItem的getter一样,我在我的Company类中添加了getter.它有效,但是您应该避免这种情况.由于您无法从数据库中查询数据库的组或装入组.
以上是内存溢出为你收集整理的android-对嵌套的json对象使用Retrofit和GreenDao全部内容,希望文章能够帮你解决android-对嵌套的json对象使用Retrofit和GreenDao所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)