user2682165
user2682165

Reputation: 63

Remove Double Quotes at Begin & End from JSON Object/String or Java script Variable?

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

Answers (6)

Lisandro Arciles
Lisandro Arciles

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

Brian
Brian

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

sgbj
sgbj

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

zigdawgydawg
zigdawgydawg

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

Jason P
Jason P

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

ronnyfm
ronnyfm

Reputation: 2081

Since you are usig jQuery, try http://api.jquery.com/jQuery.parseJSON/ and it will return you an object instead.

Upvotes: 0

Related Questions