Reputation: 63
I'm getting a JSON Array of objects from servlet and trying to populate in a table control in java script.
Here is my code, for some reason it is putting double quotes at the beginning and End, which is not accepted by Table control for populating values. how can I remove this double quotes at beginning and End.
aData = [{"A":"one","B":"Two","C":"Three","D":"8","E":"No","F":"Business","G":"0",
"L1H":"Analytics"},{"A":"ones","B":"Twos","C":"Threes","D":"85","E":"Nos",
"F":"BusinessD","G":"0","L1H":"AnalyticsM"}]
var oModel = new sap.ui.model.json.JSONModel();
oModel.setData({modelData: aData});
var oTable=sap.ui.getCore().byId("id1");
oTable.setModel(oModel);
oTable.bindRows("/modelData"); // This static code of aData is working fine in
// my Table control of HTMl page.
//Here, i Wanted to get values dynamically from servlet and populate it in Table.
var global;
$.get('someServlet', function(data) {
var abc, xyz;
for(var i=0;i<(data.length);i++){
abc='{'+'\"A\":'+'\"'+data[i].A+'\"'+','+'\"B":'+'\"'+data[i].B+'\"'+',
'+'\"C\":'+'\"'+data[i].C+'\"'+','+'\"D\":'+'\"'+data[i].D+'\"'+',
'+'\"E\":'+'\"'+data[i].E+'\"'+','+'\"F\":'+'\"'+data[i].F+'\"'+',
'+'\"G\":'+'\"'+data[i].G+'\"'+','+'\"H\":'+'\"'+data[i].H+'\"}';
if (xyz===undefined)
xyz=abc;
else
xyz=abc+','+xyz;
global = xyz;
}
global="["+global+"]";
var oModel = new sap.ui.model.json.JSONModel();
oModel.setData({modelData: global});
var oTable=sap.ui.getCore().byId("id1");
oTable.setModel(oModel);
oTable.bindRows("/modelData");
});
//global="[{"A":"one","B":"Two","C":"Three"}...]"
//alert(global); Displaying without double quotes as expected.
//when I see the value in Chrome debugger double quotes are appearing at begin&End
So Finally I have value in global variable is, with double quotes.
//global="[{"A":"one","B":"Two","C":"Three","D":"8","E":"No","F":"Business","G":"0","L1H":"Analytics"},
{"A":"ones","B":"Twos","C":"Threes","D":"85","E":"Nos","F":"BusinessD","G":"0","L1H":"AnalyticsM"}]"
how can I get rid of this double quotes at beginning and end of this resultSet JSONArray Objects? If I put Alert, it is displaying without double Quotes. when I see this global variable in Chrome debugger, it is showing with Double quotes and failing to populate values in Table control. I'm having bit hard time with my code in populating values into Table control which are coming from Servlet in JSON format/String/Array. Please help.
Appreciate of any input and help.
Upvotes: 5
Views: 22923
Reputation: 1
La forma correcta de eliminar las comillas es con
var obJason = eval( dataString );
var obj= "[{"ID":"786-000X-XX8","NAME":"LISANDRO ARCILES"}]";
aplicado la funcion eval()
obj= eval( obj);
lo tranforma al obejeto deseado de tipo Json
Upvotes: -1
Reputation: 349
Try with this:
var myJSON = eval( data );
where data is the string that the servelt has sent. Eval function makes the work, parse a string into JSON.
Upvotes: 0
Reputation: 2274
You could call JSON.parse to parse your string into an object at the very end, that is:
global=JSON.parse("["+global+"]");
But instead of building yourself a string of JSON on the fly and then parsing it, it may just be simpler to set var global = [];
and in your for loop do:
global.push({
Deals: data[i].Deals,
L1H: data[i].L1H,
L2H: data[i].L2H
});
Have you tried the following?
$.get('someServlet', function(data) {
var oModel = new sap.ui.model.json.JSONModel();
oModel.setData({modelData: data});
var oTable=sap.ui.getCore().byId("id1");
oTable.setModel(oModel);
oTable.bindRows("/modelData");
});
Upvotes: 3
Reputation: 2046
Your global
variable is a JSON string. You don't need to construct a string. As far as I can tell, data
is already a JavaScript object. I think this is what you want:
var global;
$.get('someServlet', function(data) {
global = data;
populateTable(global); // You could just as easily pass the data variable here
});
Upvotes: 1
Reputation: 27012
Don't build or parse json yourself. There are methods available to do it for you.
If your returned json only has an array of objects with the three properties Deals
, L1H
, and L2H
, then data
is what you want. If the returned json has more properties, and you only want those three, do this instead:
function(data) {
var arr = $.map(data, function(item, idx) {
return {
Data: item.Data,
L1H: item.L1H,
L2H: item.L2H
};
});
}
Upvotes: 2
Reputation: 2081
Since you are usig jQuery, try http://api.jquery.com/jQuery.parseJSON/ and it will return you an object instead.
Upvotes: 0