1

私のスクリプトは、Cookie から文字列化された json データを取得します。

var cookie = $.cookie('someKey');
if (typeof(cookie) == 'string') {
    var fromCookie = JSON.parse(cookie);
}

データはCookie経由でユーザーから取得されるため、jsonであることを確認したい. json でない場合、スクリプトはエラーで停止します

SyntaxError: JSON.parse: end of data after property value in object
var fromCookie = JSON.parse(cookie);

エラーを取得する代わりに、データをチェックしてfromCokieにfalseを取得する方法

4

3 に答える 3

6

try catchブロックが必要です:

var fromCookie;
try {
    fromCookie = JSON.parse(cookie);
} catch (e) {
    fromCookie = false;
}
于 2013-02-26T15:58:46.253 に答える
2

解析する文字列が有効な JSON でない場合、SyntaxError 例外がスローされます。

MDNによると。

例外をキャッチするには、try/catch ブロックで囲む必要があります。

var cookie = $.cookie('someKey');
if (typeof(cookie) == 'string') {

    var fromCookie = false;

    try {
        fromCookie = JSON.parse(cookie);
    } catch (e) {
        fromCookie = false;
    }
}

ここでは、Cookie が文字列かどうかを実際にテストする必要はありませんが、実行するコードが他にもある場合に備えて残しました。

于 2013-02-26T16:01:23.340 に答える
1

完全な JSON パーサーを書きたくない場合は、try-catch.

于 2013-02-26T15:59:24.943 に答える