我正在寻找库中的方法将OData响应对象转换为可以发送到另一个ODataModel.create函数的规范化js对象。 OData“对象”将是包含“d”,“_ _ meta”,“结果”等的OData REST响应。
我在Utilities模块中有自定义方法的工作解决方案,但我不太清楚它对所有可能的OData规则的弹性。
答案 0 :(得分:1)
没有必要在有效的OData正文中包含d
,__meta
和results
部分:
d
药水是可选的。您也可以将您的身体形成为常规对象,例如:
{ Id:12345, 名称:'这是一个有效的OData主体' }
__metadata
部分也是可选的,可能会遗漏。
results
部分是您在查询实体集时收到的内容。如果您查询单个实体(通过提供其密钥),则会忽略此部分,因为只有一个结果。如果要将实体提交到OData服务,则不能使用results
部分,因为每次提交都应该在单独的操作中进行。
这样,您的规范化/处理代码可能非常简单,如下所示:
jQuery.each(odata.results, function(idx, value) {
var body = value.d ? value.d : value;
delete body.__metadata;
// Do something with the body, e.g.:
ODataModel.create("/AwesomeEntity", body);
});
我希望这能让生活更轻松吗?完整的OData v2 JSON规格可在此处获得: http://www.odata.org/documentation/odata-version-2-0/json-format/