删除开头的双引号&结束于JSON对象/字符串或Java脚本变量

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

本文关键字:对象 JSON 字符串 变量 脚本 Java 结束 开头 amp 删除      更新时间:2023-09-26

我正在从servlet中获取一个对象的JSON数组,并试图用java脚本填充表控件。

这是我的代码,由于某种原因,它在开头和结尾加了双引号,表控件不接受这一点来填充值。如何删除开头和结尾的双引号。

 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

最后我得到了全局变量is的值,用双引号。

//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":"No","F":"BusinessD","G":"0","L1H":"AnalyticsM"}]

如何摆脱这个resultSet JSONArray对象开头和结尾的双引号?如果我放置Alert,它显示为没有双引号。当我在Chrome调试器中看到这个全局变量时,它显示为双引号,并且无法填充Table控件中的值。在将值填充到表控件中时,我的代码遇到了一些困难,这些值来自JSON格式/String/Array的Servlet。请帮忙。

感谢您的任何意见和帮助。

您可以调用JSON.parse在最后将字符串解析为一个对象,即:

global=JSON.parse("["+global+"]");

但是,与其在运行中构建一个JSON字符串然后对其进行解析,不如设置var global = [];并在for循环中执行:

global.push({ 
    Deals: data[i].Deals, 
    L1H: data[i].L1H, 
    L2H: data[i].L2H 
});

你试过下面的吗?

$.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");
});

不要自己构建或解析json。有一些方法可以为你做这件事。

如果返回的json只有一个具有三个属性DealsL1HL2H的对象数组,那么data就是您想要的。如果返回的json有更多的属性,而您只需要这三个属性,请执行以下操作:

function(data) {
    var arr = $.map(data, function(item, idx) {
        return {
            Data: item.Data,
            L1H: item.L1H,
            L2H: item.L2H
        };
    });
}

您的global变量是一个JSON字符串。您不需要构造字符串。据我所知,data已经是一个JavaScript对象了。我想这就是你想要的:

var global;    
$.get('someServlet', function(data) {
    global = data;
    populateTable(global);  // You could just as easily pass the data variable here
});

由于您使用的是jQuery,请尝试http://api.jquery.com/jQuery.parseJSON/它会返回一个对象。

试试这个:

var myJSON = eval( data );

其中data是servelt发送的字符串。Eval函数实现了将字符串解析为JSON的功能。

中消除社区的形式校正

var obJason = eval( dataString );
var obj= "[{"ID":"786-000X-XX8","NAME":"LISANDRO ARCILES"}]";

eval() 功能的应用

obj= eval( obj);

的形式