2017-05-15 4 views
-1

JSON.parse kehrt zurück Fehler:JSON.parse nicht in der Lage (Unexpected Token) zu analysieren

# Ruby code in IRB 
require 'json' 
time_now = t.strftime("%a, %d %b %Y %H:%M:%S GMT") 
hash = '"date":' + time_now.to_s 
hash_json = JSON.parse(hash) 

Fehler:

JSON::ParserError: 743: unexpected token at 'Sun, 14 May 2017 21:19:02 GMT'

Meine Notwendigkeit, einen JSON-Hash haben, die einen Key hat/Wert wie:

# JSON hash 
"date": "Sun, 14 May 2017 21:19:02 GMT" 

Irgendein Einblick? Ich habe es auf verschiedene Arten versucht, bin aber jedes Mal auf dasselbe Problem gestoßen.

Antwort

2

Ihre Hash muss wie folgt definiert werden: hash = {"date" => time_now}.

Darüber hinaus gibt JSON.parse einen Hash aus einer JSON-formatierten Zeichenfolge zurück. Hash hat eine Methode, die to_json macht das Gegenteil:

require 'json' 
time_now = Time.now.strftime("%a, %d %b %Y %H:%M:%S GMT") 
hash = {'date' => time_now} 
hash_json = hash.to_json 
+0

Funktioniert !!! Vielen Dank. – Gaurav

-1

Json-Analyse, wenn Sie verwenden können, Daten enthalten JSON-Struktur; so, hash = ' "Datum":' + time_now.to_s Problem hier

hash = {"date"=> time_now.to_s} 
+0

Noch Problem bekommen ... – Gaurav

+0

irb (main): 001: 0> require 'json' => true irb (main) : 002: 0> t = Zeit.now => 2017-05-14 23:02:57 -0400 irb (Haupt): 003: 0> time_now = t.strftime ("% a,% d% b% Y% H:% M:% S GMT ") =>" So., 14 Mai 2017 23:02:57 GMT " irb (main): 004: 0> hash = {'" date ":' + time_now} SyntaxError: (irb): 4: Syntaxfehler, unex pected '}', erwartet => hash = {'"date":' + time_now} ^ – Gaurav

0

Sie sind nicht der Hash korrekt erzeugt wird. Das ist falsch:

hash = {'"date":' + time_now} 

Es sollte sein:

hash = {'date' => time_now} 
Verwandte Themen