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

(解決済み)JSONの1番目の位置で予期しないトークンoが発生した。

2022-01-21 07:02:24

この問題に取りかかる前に、JSON.parse()とJSON.stringify()について少し知識を得ることから始めましょう。

JSON.parse()メソッドでは、(1)で定義された(2)で定義された(3)のように JSON文字列 から オブジェクトを作成します。 として

var str = '{"名前":"LeonWu","年齢":"18"}'とします。

JSON.parse(str)を実行します。

// 結果はオブジェクト

// 年齢: "18"。

// 名前: "LeonWu"; 

JSON.stringify()  メソッドは、次のように JavaScript の値 (オブジェクトまたは配列) を JSON 文字列に変換するものです。

var a = {a:1,b:2,c:"LeonWu"};

JSON.stringify(a)を使用します。

// 結果は '{"a":1,"b":2,"c":"LeonWu"}' となります。

最近、WeChatアプレットのプロジェクトに取り組んでいて、この問題にぶつかりました。

ユーザーの選択を別のページに渡そうとしています。

submit() {未定義

        let cartlist = JSON.stringify(this.data.cart); //. ここでは、変換されたオブジェクトを受け取るために別の変数を定義しています。

       console.log(cartlist)。

         wx.navigateTo({undefined

               url: '... /order/order?cartlist=' + cartlist,

       })

}

別のページです。

onLoad(オプション){未定義

console.log(JSON.parse(options)); //そう簡単にはいきません、ここでエラーが報告されます。

},

実際、ここに渡した値は次のようになります。

{cartlist: '{"count":1,"total":2,"list":{"1":1}}'}' //タイプまたはオブジェクト

これはオブジェクトですが、json文字列ではありません。カートリストの値がjson文字列なので、ここが間違っています。 json.parse(中にjson文字列があるはずです)

修正しました。

onLoad(オプション){未定義

       console.log(options.cartlist); //{"count":1,"total":3,"list":{"2":1}} のようになります。

       a = JSON.parse(options.cartlist)とする。

       console.log(a.count)を実行します。

}, // 1

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

参照を渡す際に、変換後の値(オブジェクトから文字列)を受け取る値(上記のカートリスト)を指定しない場合は、JSON.parseを使用すればよいでしょう。

ちなみに、同じような悩みを抱えていたブログはこちらです。

[解決済み】Uncaught SyntaxError: Unexpected token o in JSON at position 1_硕士茂哥-CSDN博客

位置 1 にある JSON の予期しないトークン o エラーの理由_积少成多-CSDN 博客