2013-09-04 3 views
0

dans le côté du contrôleur je reçois params commeProblème sur chaîne à l'analyse syntaxique JSON.parse

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

classe de c'est String. J'essaye d'analyser ceci. Grâce à

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"}'): 

ce que je fais mal ici. Aucune suggestion?

Répondre

4

Ce n'est pas JSON valide, cela fonctionnera (utilisez []):

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"}] 

Pour vérifier la chaîne JSON, vous pouvez utiliser: http://www.jslint.com/. et la structure JSON de base: http://json.org/

À JOUR

Dans votre cas, essayez juste ceci:

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

hallucinante! ! Qu'est-ce que la chose vous a incité à penser de cette façon .. Je continuais à essayer des choses de déchets dans mon éditeur .. :( –

+0

Je sais si cela fonctionne à l'intérieur du tableau, mais il n'y a pas de tableau dans mon param Puis comment puis-je analyser Mon paramètre est "{\" violation_date \ ": \" sdfsdf \ ", \" violation_time \ ": \" \ "}, {\" violation_date \ ": \" sdfdsf \ ", \" violation_time \ ": \ "sdfsdf \"}, {\ "violation_date \": \ "1233 \", \ "violation_ time \": \ "\"}, {\ "violation_date \": \ "test \", \ "violation_time \ ": \" time \ "}" – vinothini

+1

Alors ajoutez [et] au début et à la fin de la chaîne de paramètres. '[' + params_gotton + ']' devrait fonctionner –

0
bien

, chaîne reçue ne contient pas une structure JSON appropriée ..

d'abord le convertir a reçu un param dans une structure json appropriée et l'a ensuite analysé en utilisant "JSON.parse (params_gotton)".

En données ci-dessus ont reçu toutes les clés et la valeur shud être une valeur clé format de chaîne paire .. supprimer « \ » symbole de données reçues ..

il va certainement fonctionner correctement ..