Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ruby on Rails JSON.parse unexpected token error

I am trying to parse JSON data in my Rails 3 application with JSON.parse. I keep getting this error:

737: unexpected token at '{\"0\":{\"class\":\"window\",\"text\":\"Testing\",\"style\":\"position: absolute; top: 8px; left: 8px; width: 560px; height: 290px; z-index: 0; \"}

The actual JSON is a lot longer, but it is basically the same.

like image 954
SZH Avatar asked Feb 27 '11 01:02

SZH


3 Answers

Well, we can only answer based on the part of the JSON you showed us, but it has two problems:

  1. All the quote characters (") are escaped; they don't need to be unless they are used in a double-qoted string, which it appears they are not.
  2. You are missing a closing brace (}).

Otherwise it passes based on https://jsonlint.com/.

like image 194
Michelle Tilley Avatar answered Nov 18 '22 18:11

Michelle Tilley


In my case it was a hidden tab character which showed up only when i pasted it into vim.

like image 13
Pratik Khadloya Avatar answered Nov 18 '22 18:11

Pratik Khadloya


You can directly use JSON.Parse() in-build method:

content = "[{\"addon_id\":\"1\",\"addon_price\":\"5\"}]"
# OUTPUT at Console => "[{\"addon_id\":\"1\",\"addon_price\":\"5\"}]"

JSON.parse(content.gsub('\"', '"'))
# OUTPUT at Console => [{"addon_id"=>"1", "addon_price"=>"5"}]
like image 2
Jai Kumar Rajput Avatar answered Nov 18 '22 18:11

Jai Kumar Rajput