如何从填充oData的JSON模型获取属性?

时间:2017-05-16 11:55:31

标签: json data-binding odata sapui5

我试图从oData返回模型获取属性。我将数据设置为从oData到JSON模型的成功回调函数。

  oODataModel.read("/ConnObjSet?$filter=Objecttype eq 'CONNOBJ' and ConnObject eq '20000000002'",
                        true,
                        true,
                        false,
                        function _OnSuccess(oData, oResponse){
                        var oJSON = new sap.ui.model.json.JSONModel();
                        oJSON.setData(oData);                           
                        sap.ui.getCore().setModel(oJSON, "ConnectionObject");
                        },

这是我在控制台日志中的JSON对象和我想要获得的突出显示的属性。我希望从整个阵列中获得每15个Buspartner号码。

enter image description here

这就是我试图获得的财产:

 var oLog = sap.ui.getCore().getModel("ConnectionObject").oData.results;

 console.log(oLog);

3 个答案:

答案 0 :(得分:1)

请尝试:

var aResults = this.getView().getModel().getProperty("/results");
var oJSONModel = new sap.ui.model.json.JSONModel();
oJSONModel.setProperty("/resultarray",new Array())
for(var i = 0; i<aResults.lenght;i++){ 
    oJSONModel.getProperty("/resultarray").push(aResults[i].Buspartner) 
}

答案 1 :(得分:1)

如果您有一个对象数组,则可以使用Array.map()函数从每个对象中获取一组属性。

所以在你的情况下:

var aResults = this.getView().getModel().getProperty("/results");
var aBuspartner = aResults.map(function (r) { return r.Buspartner});
var oJSONModel = new sap.ui.model.json.JSONModel();
oJSONModel.setProperty("/resultarray", aBuspartner)

答案 2 :(得分:1)

您还可以尝试添加过滤器并选择o​​Data.read

oData-URL     http://services.odata.org/V2/Northwind/Northwind.svc/Products 选择所有具有所有属性的产品

http://services.odata.org/V2/Northwind/Northwind.svc/Products?$filter=UnitsInStock%20eq%2017

仅显示具有“UnitsInStock = 17”

的产品
http://services.odata.org/V2/Northwind/Northwind.svc/Products?$select=ProductID&$filter=UnitsInStock%20eq%2017

仅选择“UnitsInStock = 17”

的产品的ProductID

所以

oODataModel.read("/ConnObjSet?$select=Buspartner&$filter=Objecttype eq 'CONNOBJ' and ConnObject eq '20000000002'"
...

应该直接获得过滤后的Buspartners。