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

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

2022-01-21 03:41:28

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

報酬

トップページに戻る

I. 概要 <ボタン

一文の要約です。 <ボタン

解決策:JSON.parse()変換のレイヤーを削除する
エラーの理由 変換したいデータは元々オブジェクトなので、JSON.parse()メソッドは文字列をjsonオブジェクトにパースするものなので、再度変換するとエラーになります。

1. エラー理由:question_list_box:JSON.parse('{!!! json_encode($question_list_box !!}') Vueのデータ これを解決するにはどうしたらいいですか? <ボタン

phpのjson_encode()の後に、ページのwindowオブジェクトを直接与えることで、直接jsonオブジェクトに変換されるので、JSON.parse()関数を使用する必要はありません。 <ボタン

2. JSON.parse()は何をするのですか?

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

トップページに戻る

II. JSON の位置 1 にある予期しないトークン o エラーの理由 <ボタン

から取得、または参照されている。JSON の位置 1 にある予期しないトークン o がエラー理由です。
https://blog.csdn.net/wxl1555/article/details/79184076


の前に書かれた文字 <ボタン

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

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

まず、その動作を見てみましょう <ボタン

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

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

JSON.parse(str);

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


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

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


の背後にある理由 <ボタン

エラー報告の理由 <ボタン

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

なぜこのようなエラーが発生するのでしょうか? <ボタン

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

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


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