2017-11-20 3 views
1

文書によれば、JSON.parseは最初の引数を文字列として取ります。 は私が予期しない動作を見つけました:JSON.parseはゼロ要素(node.js)を持つ配列で動作します

try { 
    const a = JSON.parse([ 
     '{"helloworld": 1}', 
    ]); 
    console.log(a); 
} catch (ex) { 
    console.error(ex); 
} 

私は与えられた入力引数が配列であるとして、それが失敗すると予想しました。対照的に、JSON.parseはarray [0]要素を正常に解析し、それを出力します(node.js内)。あなたは二つの要素を持つ配列を渡した場合

しかし、JSON.parseはなぜことである

try { 
    const b = JSON.parse([ 
     '{"hello": 1}', 
     '{"hello2": 2}', 
    ]); 
    console.log(b); 
} catch (ex) { 
    console.error(ex); 
} 

をエラーでしょうか?

答えて

1

JSON.parseは、文字列が必要な内部JSメソッドです。しかし、他の型が与えられた場合、それは文字列に変換されます。配列の場合、文字列への変換はarray.join(',')です。

したがって、1つの要素を持つ場合、最初の要素を文字列に変換するだけです。複数の要素を持つ配列をJSON.parseに渡すと、入力JSONが無効になるため、エラーが発生します。

+0

技術的には、[['{"hello":1 "、" hi ":2}']'は有効です...:P – Shadow

+0

true :)しかし私は他の開発者からのOMGを避けるためにそうすることを示唆していません –

関連する問題