1. ホーム
  2. フロントエンド
  3. js

JSON の位置 1 に予期しないトークン o がある エラーの理由

2022-01-21 06:09:54
<パス

私の個人的なブログへようこそ http://www.xiaolongwu.cn

の前に書かれた文字

この問題は、以前あるプロジェクトで作業していたときに一度だけ発生したことがあり、JSON.parse()のレイヤーを削除したらデータが正常に動作したので、あまり気にせず原因を深く調べなかったのです。

でも今回また遭遇してしまったので、今度は原因を突き止めなければなりません。

まず、その動作を見てみましょう

JSON.parse()は、次のように文字列からjsonオブジェクトをパースするために使用されます。

var str = '{"name":"LeonWu","age":"18"}'

JSON.parse(str);

// The result is an Object
// age: "18";
// name: "LeonWu";

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

JSON.stringify()は、以下のようなオブジェクトから文字列をパースするために使用されます。

var a = {a:1,b:2,c:"LeonWu"};
 
 JSON.stringify(a);
 
 // the result is "{"a":1,"b":2,"c":"LeonWu"}"
 

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

その理由

エラー報告の理由

変換したいデータはもともとオブジェクトなので、JSON.parse()は文字列をjsonオブジェクトにパースするメソッドであり、再度変換するとエラーになります。

なぜこのようなエラーが発生するのでしょうか

JSON.parse()のパラメータとしてObjectを渡すと、まずtoString()メソッドで文字列がデフォルトになり、"[object Object]"となるためです。

JSON.parse() は最初の文字 '[' を配列の開始と解釈し、2 番目の文字 'o' はそれをどう処理したらよいか分からないため、エラーメッセージ Unexpected token o in JSON at position 1 above をスローします。

--------------------- 分割行、2019年1月22日 11:21:03 更新 -----------------------。

そのため、私が明確に書かなかったためか、最終的な解答を求めるコメントが下に多く寄せられています。

解決策は、冒頭で述べたように、変換する必要のあるデータはすでにjsonオブジェクトであり、変換する必要がないため、JSON.parse()の変換レイヤーを削除することです。

githubのリポジトリです。 バグコレクション js1-Unexpected token o in JSON at position 1

私のCSDNブログのアドレスです。 https://blog.csdn.net/wxl1555

私のブログの内容に疑問や質問がある場合は、以下のコメント欄にご記入いただくか、メールでお問い合わせいただければ、一緒に学び、進歩することができます。

メール:[email protected]