2015-02-08 150 views
0

我得到一個JSON字符串,它在一個數據字段中包含另一個JSON字符串,用\和\「\」包圍。我喜歡在解析它們之前刪除它們。我用正則表達式替換:正則表達式:從JSON字符串中刪除轉義字符

var data = evt.data.replace(/\\\"/g,"\""); 
data = data.replace(/\"\{/g,"{"); 
data = data.replace(/\}\"/g,"}"); 

輸入字符串:

{"data":[{"beehive":"yaylaswiese","gamestate":"{\"currentGame\":\"StorieS3\"}","magicspell":"","sid":"40cc9dba822746fd572cece0416b320426759cc8"}],"sid":"login"} 

應該是:

{"data":[{"beehive":"yaylaswiese","gamestate":{"currentGame":"StorieS3"},"magicspell":"","sid":"40cc9dba822746fd572cece0416b320426759cc8"}],"sid":"login"} 

我的作品,但它看起來很複雜,以取代\ 「用」,「{與{和}「與}

有沒有更簡單的解決方案?

+0

請張貼輸入字符串的示例。看起來你應該能夠解析外部字符串,然後定位包含內部字符串的元素並分別解析該字符串。 – 2015-02-08 19:24:38

+0

我在上面添加了它。 – Michael 2015-02-08 19:29:17

+0

你如何得到這個字符串?內部的一個應該是可解析的,假設整個東西被加載到一個對象'JSON.parse(obj.data [0] .gamestate)' – 2015-02-08 19:41:23

回答

2

有沒有必要執行任何字符串替換unescape內部字符串。相反,您可以將外部字符串加載到變量中,並通過數組鍵或屬性來定位內部字符串。當發現時,你可以在JSON.parse()的內部:

// Storing the main string in a variable 
var outer = {"data":[{"beehive":"yaylaswiese","gamestate":"{\"currentGame\":\"StorieS3\"}","magicspell":"","sid":"40cc9dba822746fd572cece0416b320426759cc8"}],"sid":"login"}; 

// The inner string is accessible at 
var inner = outer.data[0].gamestate; 
// "{"currentGame":"StorieS3"}" 

// Parse it: 
JSON.parse(inner); 
// Object {currentGame: "StorieS3"}