0

長い間try - catch、文字列が有効な JSON であることを確認していました。今日、次のような構文エラーが発生することを期待しているときに、 JSON.parse(1)(数値) が返さ1れ、JSON.parse("123")返されることがわかりました。"123"Expecting '{', '['

この答えでさえ、私の問題を解決していないようです。

だから、問題は: JSON.parse() は、そこに渡す引数が正しい JSON 形式であるかどうかを示すことができますか?

そうでない場合、代替手段はどれですか?

4

2 に答える 2

2

JSON.parse() は、そこに渡す引数に正しい JSON 形式があるかどうかを示すことができますか?

はい、それはそれがすることです。「正しい」には 2 つの異なる定義があるだけです。公式のRFCでは. _ _ _ 期待どおりに動作します。JSON-text = object / arrayJSONValueJSONTextJSON.parse

受け入れられる値をオブジェクトおよび配列表記に制限したい場合は、単に使用します

var result = JSON.parse(string);
if (result !== Object(result)) // typeof result != 'object' || result == null
    throw new Error("JSON.parse: Object or Array literal expected, got: "+typeof result);
于 2013-09-13T11:13:16.800 に答える