android-对嵌套的json对象使用Retrofit和GreenDao

android-对嵌套的json对象使用Retrofit和GreenDao,第1张

概述我想将Retrofit和GreenDao结合起来,但是嵌套Json-Objects出现了问题.我的嵌套字段保持为空.这是JsonDataStructure[{"id":1,"street":"Streetname","zipcode":12345,"city":"MyCity",

我想将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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1089671.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存