我正在使用Javascript来汇总sharepoint列表中的数据。我已经让查询工作并返回OK,我可以从控制台看到它正在返回我需要的所有东西,但是我无法解决它如何解析它。
jQuery.fromJSON
会返回错误,就像我尝试过的其他大量内容一样。除了做一些正则表达式或其他我不知所措。
任何人都可以建议如何解析这种类型的sharepoint响应,这样我就可以使用每一行中的对象/数据。
由于
function GetProductInformation(){
var query = '<View><Query><Where> <And><Geq><FieldRef Name="Data_x0020_Due_x0020_Date"/><Value IncludeTimeValue="FALSE" Type="DateTime">2017-07-01</Value></Geq><Leq><FieldRef Name="Data_x0020_Due_x0020_Date"/><Value IncludeTimeValue="FALSE" Type="DateTime">2018-06-29</Value></Leq></And> </Where><GroupBy Collapse="TRUE"><FieldRef Name="Analyser"/></GroupBy></Query><ViewFields><FieldRef Name="Analyser"/><FieldRef Name="Number_x0020_of_x0020_products"/></ViewFields><Aggregations Value="On"><FieldRef Name="Number_x0020_of_x0020_products" Type ="SUM"/></Aggregations></View>';
console.log("Query is " + query);
var clientContext = new SP.ClientContext.get_current();
var oList = clientContext.get_web().get_lists().getByTitle('Work tracker - Products');
console.log("GetProductInformation Async Request")
jsonResult = oList.renderListData(query);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onGetProductQuerySucceeded), Function.createDelegate(this, this.onGetProductQueryFailed));
//clientContext.executeQueryAsync(onGetProductQuerySucceeded, onGetProductQueryFailed);
console.log("GetProductInformation Async Requested")
}
function onGetProductQuerySucceeded(sender, args) {
console.log('Query Success');
var dataFromYou = jsonResult
console.log(dataFromYou);
var data = dataFromYou.Row[0]; //This bit doesn't work
console.log(data)
在下面找到一些示例输出:
"{ "Row" :
[{
"Analyser": [{"lookupId":1,"lookupValue":"Accounts Payable
Analyser","isSecretFieldValue":false}],
"Analyser.urlencoded": "%3B%23Accounts%20Payable%20Analyser%3B%23",
"Analyser.COUNT.group": "363",
"Analyser.newgroup": "1",
"Analyser.groupindex": "1_",
"Number_x0020_of_x0020_products.SUM": "14,694",
"Number_x0020_of_x0020_products.SUM.agg": "658"
}
,{
"Analyser": [{"lookupId":2,"lookupValue":"Accounts Receivable
Analyser","isSecretFieldValue":false}],
"Analyser.urlencoded": "%3B%23Accounts%20Receivable%20Analyser%3B%23",
答案 0 :(得分:1)
在示例中:
var result = list.renderListData(qry.get_viewXml());
SP.List.renderListData
method返回SP.Result
个对象,列表数据可以像这样检索:
var listData = result.get_value();
由于列表数据作为JSON字符串返回,因此可以很容易地解析它:
var jsonVal = JSON.parse(result.get_value());
if(jsonVal.Row.length > 0)
console.log(jsonVal.Row[0]); //get first row data
示例强>
var ctx = SP.ClientContext.get_current();
var list = ctx.get_web().get_lists().getByTitle(listTitle);
var qry = SP.CamlQuery.createAllItemsQuery();
var result = list.renderListData(qry.get_viewXml());
ctx.executeQueryAsync(
function(){
var jsonVal = JSON.parse(result.get_value());
if(jsonVal.Row.length > 0)
console.log(jsonVal.Row[0]);
},
function(sender,args){
console.log(args.get_message());
});
答案 1 :(得分:-1)
我使用以下方法找到了相同问题的解决方案:
var results = JSON.parse(data.d.RenderListData).Row;
这给了我一个返回的listdata对象数组。