环回Android SDK中的嵌套模型

环回Android SDK中的嵌套模型,android,mongodb,loopbackjs,strongloop,Android,Mongodb,Loopbackjs,Strongloop,我有一个带有MongoDB后端的环回实例,并定义了一个模型,该模型将名为“location”的嵌套(匿名)模型作为属性: "name": "thing", "plural": "things", "base": "PersistedModel", "idInjection": true, "options": { "validateUpsert": true }, "properties": { "title": { "type": "st

我有一个带有MongoDB后端的环回实例,并定义了一个模型,该模型将名为“location”的嵌套(匿名)模型作为属性:

  "name": "thing",
  "plural": "things",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "title": {
      "type": "string",
      "required": true
    },
    "description": {
      "type": "string"
    },
    "location": {
      "lat": {
         "type": "string"
      },
      "lng": {
         "type": "string"
      }
    }
  },
  "validations": [],
  "relations": {},
  "acls": [],
  "methods": {}
}
在我的android项目中,我使用LoopbackSDK将所有“thing”模型提取到thing.java类的实例中,该类从loopback的模型类扩展而来

ThingRepository repository = restAdapter.createRepository(Thing.class);
    repository.findAll(/* callback code ommitted */)

public class Thing extends Model {
    private String id;
    private String title;
    private String description;
    private Location location;
    /* getters/setters removed */
  }
当我从服务器获取所有“东西”时,它们看起来都很好,除了嵌套的“位置”总是空的。我已经验证了我可以从loopback的restapi中获取东西,并且正确填充了位置。但环回客户端似乎不会反序列化并填充“位置”。“Location”是一个简单的java类,只有2个整数(lat和long)。我也尝试过让它从“Model”扩展,但它仍然返回为null

public class Location extends Model {
    private String lat;
    private String lng;
    /* getters/setters removed */
}
有什么想法吗?

一旦我们用一个支持自定义注释的适当库替换了手工编写的JSON解析器,我们就有望免费获得它

同时,一个简单的解决方案是创建一个
位置
模型,添加一个
东西
HasOne
位置
关系,并使用“api/thing/{id}/location”端点

或者,您可以分叉、更改JSON解析库并发出请求。这取决于你;)


编辑:或者,您可能已经想到了一个更简单的解决方案,删除嵌套对象并使用两个经典属性
location\u lat
location\u lng
我只更改了sdk的几行,现在它可以递归地解析所有嵌套模型

compile 'com.github.farruxx:loopback-sdk-android:v1.6.3'

非常感谢你提供的信息,我想你是对的。我将把这个问题再打开一段时间,然后将您的答案设置为解决方案。我添加了另一个更简单的解决方案