环回Android SDK中的嵌套模型
我有一个带有MongoDB后端的环回实例,并定义了一个模型,该模型将名为“location”的嵌套(匿名)模型作为属性:环回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
"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'
非常感谢你提供的信息,我想你是对的。我将把这个问题再打开一段时间,然后将您的答案设置为解决方案。我添加了另一个更简单的解决方案