2013-07-03 10 views
6

JSON undefined errorsJSON.stringifyストリング

JSON.stringify(null)戻り列nullありません。

JSON.stringify(undefined)は、値undefinedを返します。 文字列を返さないでください。undefined

undefinedまたは文字列undefinedを解析すると、SyntaxErrorとなります。

JSONがundefinedでチョークする理由と、文字列化/解析の際の回避方法を説明できますか?

+0

JSON.stringify(myvar?myvar: "* ERROR *") ' –

+2

または' JSON.stringify(myvar || "* ERROR *") ' – Ben

+5

"を返すことはできません。定義されていない文字列?* "いいえ、' undefined'は[JSONによって認識されません](http://json.org/)です。 JSON.stringify({foo: 'bar'、baz:undefined})=== '{"foo": "bar"}' ' 'undefined'は値をスキップする方法です(' replacer'で)(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)。 –

答えて

2
if(JSON.stringify(input) === undefined) { 
    // error handle 
} 

または

if(input === undefined) { 
    // error handle 
} 
else { 
    JSON.stringify(input); 
} 

申し訳ありません。時には人生は難しいです。これはあなたがしなければならないものです。

+4

最初の世界の問題... –

1

この理由はnullが未定義で、それはdoesnの意味、JSONに変換するときに、それは価値がないというあなたにJSONを与え、値を持たない変数によって引き起こされていることですまったく存在しないので、存在しないもののJSONオブジェクトを作成することはできません。

if(typeof myvar === 'undefined') 

を実行して、エラーコードを正常に処理する前に確認してください。 一般的に、あなたのJSにundefinedを避けようとすると、彼らはどこにいても奇妙なことをすることができ、nullと同じではなく、通常は別々に扱われます。

+1

Javascript is bit weird。プロパティは存在していても未定義です: 'window.x = undefined; console.log(window.x); console.log(ウィンドウ内のx)。 // undefined、true' – Paulpro

+0

true、類似の未定義は 'undefined =" hello "'と定義できます。 JavaScriptを好きになった – Ben

+1

最新バージョンのECMAScriptでは、 'undefined'は書き込み不可能なので、' undefined'の値は変更しませんが、 'undefined'の値を上書きする古いバージョンでは真です。 – Paulpro