vinothini
vinothini

Reputation: 2604

Issue on parsing string at JSON.parse

In controller side i am getting params like

"{\"violation_date\":\"sdfsdf\",\"violation_time\":\"\"},{\"violation_date\":\"sdfdsf\",\"violation_time\":\"sdfsdf\"},{\"violation_date\":\"1233\",\"violation_
time\":\"\"},{\"violation_date\":\"test\",\"violation_time\":\"time\"}"

class of this is String. I am trying to parse this. Through

JSON.parse(params_gotton)

Got

 JSON::ParserError (757: unexpected token at ',{"violation_date":"sdfdsf","violation_time":"sdfsdf"},{"violation_date":"1233","violation_time":""},{"violation_d
te":"test","violation_time":"time"}'):

What i am doing wrong here. Any suggestions?

Upvotes: 0

Views: 89

Answers (2)

Vikash Pandey
Vikash Pandey

Reputation: 5443

well, received string does not contain a proper Json structure..

First convert that received param in a proper json structure and then parse it using "JSON.parse(params_gotton)".

In above received data all key and value shud be in a key value pair string format.. remove "\" symbol from received data..

it will definitely work fine..

Upvotes: 0

Yevgeniy Anfilofyev
Yevgeniy Anfilofyev

Reputation: 4847

It's not valid json, this will work (use []):

require 'json'
jsn = '[{"violation_date":"sdfsdf","violation_time":""},
{"violation_date":"sdfdsf","violation_time":"sdfsdf"},
{"violation_date":"1233","violation_time":""},
{"violation_date":"test","violation_time":"time"}]'

JSON.parse(jsn) # => [{"violation_date"=>"sdfsdf", "violation_time"=>""}, {"violation_date"=>"sdfdsf", "violation_time"=>"sdfsdf"}, {"violation_date"=>"1233", "violation_time"=>""}, {"violation_date"=>"test", "violation_time"=>"time"}]

To verify json string you could use: http://www.jslint.com/. And basic json structure: http://json.org/

UPDATED

In your case just try this:

JSON.parse('[' + params_gotton + ']')

Upvotes: 4

Related Questions