所以我有這個非常大的對象,我用它來控制nodejs應用程序中的東西。有時我將這個對象存儲在數據庫[mysql]中,所以如果進程崩潰或重新啓動並且某些內容已被更改,則更改將被保存。很簡單。JSON.parse錯誤,不會解析我只是JSON.stringify'd
目的是這樣的:http://snippi.com/s/z5nq0v5
它定義爲global.config。
所以存儲,我用我的節電功能:
client.query('SELECT data FROM settings WHERE (id = \''+ config.room +'\')',
function(a, b, c) {
if (!b[0]) {
client.query('INSERT INTO settings (id, data) VALUES (?, ?)', [config.room, JSON.stringify(config)],
function (a) { if (a) throw a;Log("Saved settings"); }
);
} else {
client.query('UPDATE settings SET data="?" WHERE id="'+config.room+'"',
[JSON.stringify(config)],
function (a) { if (a) throw a;Log("Saved settings"); }
);
}
}
);
而且似乎工作。但是,當我嘗試加載它後,我改變了一些東西,並保存, 我得到一個錯誤。這是加載代碼:
client.query('SELECT data FROM settings WHERE (id = \''+ config.room +'\')',
function(a, b, c) {
console.log(b.length);
if (a) return console.log(a);
if (!b[0]) return db.save("settings");
console.log(b[0].data);
config = JSON.parse(b[0].data);
Log("Loaded Settings");
}
);
正如你所看到的,我真正做的是調用JSON.parse()來我剛剛前面字符串化的對象。但是我收到一個錯誤。錯誤是
undefined:1
3Th0seB310W","ui
^
SyntaxError: Unexpected token '
但是在它所談論的區域沒有'。如果你參考那裏的物體。
這些結果形式的console.log(B [0]。數據):http://snippi.com/s/tknlgyo
任何幫助,將不勝感激,如果它的需要,我會添加更多的信息。 注意:auth代碼顯然已經改變,但它只是一個十六進制值,就像它下面的uid一樣,只是更長。
你可以顯示保存代碼嗎?另外,當你運行console.log(b [0] .data])時,你能準確地告訴我們什麼是記錄嗎? – Dancrumb 2012-07-09 00:39:02
已更新。它似乎不是逃避一些單引號。我以爲stringify爲你做了那個? – 2012-07-09 00:55:46
不知道爲什麼你的字符串不解析好。轉義所有單引號後,它爲我解析:http://jsfiddle.net/rtoal/xHWM4/1/ – 2012-07-09 00:58:23