2016-08-03 36 views
-2

嗨,大家好,我想從JSON字符串的第一個和最後一個地方刪除雙引號,我需要將一個JSON對象放在另一個JSON對象中,我將顯示我的代碼和我的要求。如何在JavaScript中刪除JSON字符串中的第一個和最後一個雙引號?

var sysMsg = new Object(); 
    sysMsg.timestamp = "100"; 
    sysMsg.seq = "5"; 
    sysMsg.serviceid = "21"; 
    sysMsg.srcip = "192.168.0.1"; 
    sysMsg.ver = "1.0"; 
var sysString= JSON.stringify(sysMsg); 
window.alert(sysString);   

var systmMsg = new Object(); 
systmMsg.sys = sysString; 
// JSON.stringify(hdrString); 
var sysFinal= JSON.parse(systmMsg); 
alert(sysFinal); 
sysFinal = sysFinal.replace(/\\/g, ""); 
window.alert(sysFinal);        

var hdrMsg = new Object(); 
hdrMsg.appcontext = "context"; 
hdrMsg.appname = "appName"; 
hdrMsg.appid = "identifier"; 
hdrMsg.cmd = "command"; 
hdrMsg.timeout = "500"; 
hdrMsg.option = "optionCommand"; 
var hdrString= JSON.stringify(hdrMsg); 
//window.alert(hdrString); 
var hdrFinal = new Object(); 
hdrFinal.hdr = hdrString;        
var hdrFinalMsg= JSON.stringify(hdrFinal); 
hdrFinalMsg = hdrFinalMsg.replace(/\\/g, ""); 
window.alert(hdrFinalMsg); 

var dataMsg = new Object(); 
dataMsg.CntrlID = "6"; 
dataMsg.Devinst = "1"; 
dataMsg.btnstatus = "btnStatus"; 
dataMsg.DevID = "33"; 
dataMsg.value = "true"; 
dataMsg.status = "errorStatus"; 
var dataString = JSON.stringify(dataMsg); 
//window.alert(dataString); 

var dataFinal = new Object(); 
dataFinal.data = dataString;        
var dataFinalMsg= JSON.stringify(dataFinal); 
dataFinalMsg = dataFinalMsg.replace(/\\/g, ""); 
window.alert(dataFinalMsg); 

var appData = hdrFinalMsg.concat(dataFinalMsg); 
var appFinal = new Object(); 
appFinal.app = JSON.stringify(appData); 
var appFinalMsg= JSON.stringify(appFinal); 
appFinalMsg = appFinalMsg.replace(/\\/g, ""); 
window.alert(appFinalMsg); 

var finalData = appFinalMsg.concat(sysFinal); 
var finalMsg= JSON.stringify(finalData); 
finalMsg = finalMsg.replace(/\\/g, ""); 
window.alert(finalMsg); 

在這裏,我得到的字符串如下

"{"app":""{"hdr":"{"appcontext":"context","appname":"appName","appid":"identifier","cmd":"command","timeout":"500","option":"optionCommand"}"}{"data":"{"CntrlID":"6","Devinst":"1","btnstatus":"btnStatus","DevID":"33","value":"true","status":"errorStatus"}"}""}{"sys":"{"timestamp":"100","seq":"5","serviceid":"21","srcip":"192.168.0.1","ver":"1.0"}"}" 

但我想下面的輸出

{"app":{"data":{"Cntrl.ID":"6","Dev.inst":"1","btn.status":"btnStatus","Dev.ID":"33","value":"true","status":"errorStatus"},"hdr":{"appcontext":"context","appname":"appName","appid":"identifier","cmd":"set","timeout":"500","option":"optionCommand"}},"sys":{"srcip":"192.168.0.1","ver":"1.0","serviceid":"21","seq":"5","timestamp":"100"}} 

回答

1

我重構你的代碼,所以你可以看看如何做到這一點擺脫所有這些字符串操作:

如果你有對象 - 工作只是與他們的工作和序列化JSON當你」已經得到了你所需要的:

小提琴:https://jsfiddle.net/myppwgmb/

,這裏是我怎麼會做它:

var sys = { 
    timestamp: "100", 
    seq: "5", 
    serviceid: "21", 
    srcip: "192.168.0.1", 
    ver: "1.0", 
}; 

var hdr = { 
    appcontext: "context", 
    appname: "appName", 
    appid: "identifier", 
    cmd: "command", 
    timeout: "500", 
    option: "optionCommand", 
}; 

var data = { 
    CntrlID: "6", 
    Devinst: "1", 
    btnstatus: "btnStatus", 
    DevID: "33", 
    value: "true", 
    status: "errorStatus", 
} 

var dataFinal = { 
    app: { 
    data: data, 
    hdr: hdr, 
    }, 
    sys: sys 
} 

alert(JSON.stringify(dataFinal)); 

小提琴:https://jsfiddle.net/myppwgmb/1/

+0

非常感謝您的先生..爲你的幫助,Incase,如果我需要動態獲取陣列中的數據,我該怎麼辦在這種情況下。事先感謝 –

+0

所以..你的數組是什麼樣子?你現在還沒有指定一個。 – Wolfgang

+0

我必須得到數據ctrlID DevID和所有從另一個文件,我需要每次更新它們。所以我問你如何動態更新數值 –

-1

在這裏你去

var yourString = "{JsonString}"; 
var result = yourString.substring(1, yourString.length-1); 

或者你可以使用.slice

var result = yourString.slice(1, -1); 
+0

謝謝!很好的工作(我使用切片,不知道爲什麼你會想要使用子字符串)。當您必須使用JSON.stringify時,它會添加前導和尾隨雙引號,這會很好地處理它:JSON.Parse(JSON.stringify(STRING_WITH_INVALID_JSON_CHARACTERS).slice(1,-1)) – Tolga

相關問題