1. ホーム
  2. Web プログラミング
  3. ジャバスクリプト

[解決済み】SyntaxError: JSONの位置1に予期しないトークンoがある。

2021-12-28 20:36:01

質問

コントローラのパースで取得しようと思っているデータは以下の通りです。

{  
   "data":{  
      "userList":[  
         {  
            "id":1,
            "name":"soni"
         }
      ]
   },
   "status":200,
   "config":{  
      "method":"POST",
      "transformRequest":[  
         null
      ],
      "transformResponse":[  
         null
      ],
      "url":"/home/main/module/userlist",
      "headers":{  
         "rt":"ajax",
         "Tenant":"Id:null",
         "Access-Handler":"Authorization:null",
         "Accept":"application/json, text/plain, */*"
      }
   },
   "statusText":"OK"
}

そして、次のようなコードを実行します。

var userData = _data;
var newData = JSON.parse(userData).data.userList;

しかし、私はエラーが発生しました。

Uncaught SyntaxError: Unexpected token o in JSON at position 1

解決方法は?

投稿されたJSONは問題ないように見えますが、あなたのコードでは、それはもうJSON文字列ではなく、すでにJavaScriptオブジェクトである可能性が高いのです。つまり、これ以上パースする必要はありません。

Chromeのコンソールなどで、ご自身でテストしてみてください。

new Object().toString()
// "[object Object]"

JSON.parse(new Object())
// Uncaught SyntaxError: Unexpected token o in JSON at position 1

JSON.parse("[object Object]")
// Uncaught SyntaxError: Unexpected token o in JSON at position 1

JSON.parse() は入力を文字列に変換する。その toString() メソッドは、デフォルトではJavaScriptオブジェクトの [object Object] その結果、観察される動作は、以下のようになります。

代わりに以下を試してみてください。

var newData = userData.data.userList;