我使用JSON.stringify()將javascript對象保存到localstorage。從localStorage修復損壞的json-javascript
localStorage.setItem('stored_object', JSON.stringify(objCases));
每隔一段時間,我會發現JSON字符串已經自發地從這個改變:
{"9999999999999":{"case":"dummy","subj":"example","note":"placeholder"}}
成這樣:
{asynchronous_key:'577b3620-8cbd-5251-b526-5882044f1386', jsonObject:{"\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039":{"\u0063\u0061\u0073\u0065":"\u0064\u0075\u006d\u006d\u0079","\u0073\u0075\u0062\u006a":"\u0065\u0078\u0061\u006d\u0070\u006c\u0065","\u006e\u006f\u0074\u0065":"\u0070\u006c\u0061\u0063\u0065\u0068\u006f\u006c\u0064\u0065\u0072"}}}
在another question,用戶GoTo 0
提供解決方案,但我很難實現它。我想我失去了一些東西基本:
堆棧片段實例:
var badjson = {asynchronous_key:'49098507-12cd-e1b0-b442-5882cd1bf37e', jsonObject:{"\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039":{"\u0063\u0061\u0073\u0065":"\u0064\u0075\u006d\u006d\u0079","\u0073\u0075\u0062\u006a":"\u0065\u0078\u0061\u006d\u0070\u006c\u0065","\u006e\u006f\u0074\u0065":"\u0070\u006c\u0061\u0063\u0065\u0068\u006f\u006c\u0064\u0065\u0072"}}};
localStorage.setItem('remindObj', JSON.stringify(badjson));
console.log('Here 03: '+ localStorage.getItem('remindObj'));
var getjson = localStorage.getItem('remindObj');
console.log('Here 06: ' +getjson);
console.log(typeof(getjson));
console.log(getjson.indexOf('asynchronous_key'));
if (getjson.indexOf('asynchronous_key') > 0){
console.log('ASYNCHRONOUS_KEY FOUND - Attempting to fix');
originalJSONString = JSON.stringify(getjson.jsonObject);
console.log('FIXING: ' +originalJSONString);
objRemind = JSON.parse(originalJSONString);
localStorage.setItem("remindObj", originalJSONString);
console.log('FIXED: ' +localStorage.getItem("remindObj"));
}
_ 「每隔一段時間,我會發現JSON字符串已經自發地改變」 _你能形容 「自發地改變」? – guest271314
@crashwap,你可以嘗試改變這一行:'originalJSONString = JSON.stringify(getjson.jsonObject);'到這裏:'originalJSONString = JSON.stringify(JSON.parse(getjson).jsonObject);'。這是否解決了您的問題? –
問題出在這個問題上:'from this'是它如何被初始存儲在localStorage中,以及它在被檢索後如何出現 - 直到發生一些未知的破壞事件,並將LS項轉換爲'this into'格式。我沒有解釋如何/爲什麼LS項目正在改變,但正在發生。我懷疑這是我正在與之合作的企業OSS系統的產物,而我無法控制這個產品。 – crashwap