我使用 Microsoft.Net 和 Breeze 来获取 API,并且使用 Retrofit 得到的结果嵌套了重复的相同对象。例如,EmployeeJob 具有 Customer 导航属性,因此 API 结果如下所示
{
Id:1,
"Customer_Id": 39,
"Customer": {
"$id": "2",
"$type": "Wit.Trade.Entities.Customer, Wit.Trade",
"CourtesyTitle": "Mr",
"FirstName": "Ahmad"
}
}
{
Id:2
"Customer_Id": 39,
"Customer": {
"$ref": "2" //here same customer Ahmad
},
}
现在是JavaList
我得到这些EmployeeJobs
只有Customer
在第一个记录和其他什么都没有。我怎样才能绘制地图$ref:"2"
为其原始值而不是这个值$ref
.
出于网络和性能原因,我不希望我的服务器 API 发送完整的对象,这就是我想要反序列化这些对象的原因$refs
在客户端就像Angularjs $resource service
对我们来说。
目前我已经手动解决了这样的 $ref 解决方案
//========== $ref manual solution for employee jobs' customers
List<Customer> completedCustomers = new ArrayList<>();
for (EmployeeJob empJob : empJobs) {
if (empJob.Customer != null && empJob.Customer.Id == null && empJob .Customer.$ref != null) {
for (Customer comCus : completedCustomers) {
if (comCus.$id.equalsIgnoreCase(empJob.Customer.$ref))
empJob.Customer = comCus;
}
} else
completedCustomers.add(empJob.Customer);
}
Now empJobs
将 $refs 替换为相应的 Customer。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)