[英]parsing error JSON.parse(unexpected token u)
var storage = chrome.storage.local;
var cachedStorage = {};
這是js文件。它顯示了意外的令牌u。即使我已經正確解析了。它也顯示了其html源頁面的意外令牌。有人可以建議我如何解決這個問題。
var defaultStorage = [{
savedPatterns: JSON.stringify([
[{
"en": "English"
}, {
"it": "Italian"
}, "25", true],
[{
"en": "English"
}, {
"la": "Latin"
}, "15", false]
]),
}];
錯誤發生在這里,意外的令牌u
function createPattern() {
console.log('createPattern begin');
var patterns = JSON.parse(S('savedPatterns'));
var srce = [],
trg = [],
prb = [];
console.log(S('savedPatterns'));
console.debug(S('savedPatterns'));
var translator = document.getElementById('translatorService');
var service = translator.children[translator.selectedIndex].value;
srce[0] = document.getElementById('sourceLanguage');
srce[1] = srce[0].children[srce[0].selectedIndex].value;
srce[2] = srce[0].children[srce[0].selectedIndex].text;
trg[0] = document.getElementById('targetLanguage');
trg[1] = trg[0].children[trg[0].selectedIndex].value;
trg[2] = trg[0].children[trg[0].selectedIndex].text;
prb[0] = document.getElementById('translationProbability');
prb[1] = prb[0].children[prb[0].selectedIndex].value;
patterns.push([
[srce[1], srce[2]],
[trg[1], trg[2]],
prb[1],
false,
service
]);
saveBulk({
'savedPatterns': JSON.stringify(patterns)
}, 'Saved Pattern');
console.log('createPattern end');
}
function S(key) {
return cachedStorage[key];
}
function loadStorageAndUpdate(callback) {
storage.get(null, function(data) {
console.log('data: ' + data + ' : ' + JSON.stringify(data));
var d = {};
if (!data || JSON.stringify(data) == '{}') { // in this case, storage was not initialized yet
console.log('setting storage to defaultStorage (stringified): ');
console.log(JSON.stringify(defaultStorage));
storage.set(defaultStorage);
d = defaultStorage;
} else {
d = data;
}
cachedStorage = d;
if (!!callback) {
callback(d);
}
});
}
錯誤當JSON.parse
失敗時出現Unexpected token
,根據字符(在這種情況下為u
),您可以假定其原因。
try { JSON.parse(undefined) } catch (ex) { document.write(ex.message + "<br/>") } try { JSON.parse({}) } catch (ex) { document.write(ex.message) }
您可以嘗試如下操作:
function s(key) {
var obj = {
foo: "foo",
bar: "bar"
}
var v = null;
try {
v = JSON.parse(obj[key]);
} catch () {
v = obj[key];
}
return v;
}
function main() {
var v = s("foo");
}
請參考以下帖子以獲取更多信息。 未捕獲的SyntaxError:帶有JSON.parse的意外令牌
您正在嘗試解析undefined
。 當您調用JSON.parse()
,您傳入的是S('savedPatterns')
,后者依次嘗試訪問cachedStorage['savedPatterns']
,但開頭是undefined
,您無法解析。 您可以將cachedStorage
初始化為:
var cachedStorage = {
savedPatterns: JSON.stringify([])
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.