2016-04-20 9 views
0

zu analysieren habe ich eine Datei namens Output.json:Wie eine JSON-Datei in Ruby-Version 1.8.7

[ 
    { 
    "name": "krishna", 
    "service": "postman", 
    "host": "xxxxxx", 
    "doing": [], 
    "pool": "xxxxxx", 
    "roleType": "yyyyy", 
    "simple": true 
    } 
] 

Und das ist meine test.rb Datei:

require 'rubygems' 
require 'json' 
require 'pp' 

file = File.read('output.json') 
data_hash= JSON.parse(file) 
pp data_hash 

Wenn ich versuche, das Skript auszuführen, erhalte ich:

from /usr/lib/ruby/gems/1.8/gems/json-1.4.6/lib/json/common.rb:146:in `parse' 

Wie drucke ich den Wert „krishna“, wenn ich den Namen aus der JSON-Datei aufrufen.

+0

Können Sie den vollständigen Fehler hinzufügen Nachricht bitte. Es scheint, dass du den Anfang verpasst hast. – Uzbekjon

+0

@Uzbekjon Es wird die gesamte JSON-Datei gedruckt, aber am Ende wird dieser Fehler von /usr/lib/ruby/gems/1.8/gems/json-1.4.6/lib/json/common.rb:146:in angezeigt 'parse ' von test.rb: 9 – user1642224

+0

' Parse' ist als AC-Erweiterung implementiert, wissen Sie, ob Ihr derzeitiges Juwel gegen Ihre aktuelle Version von Ruby kompiliert ist? – photoionized

Antwort

0

Obwohl ich nie versucht, Version 1.8.7 (nur 1.9.3 und höher)

Ich würde Ihr Problem ist, dass Sie die Datei zu lesen korrekt sind nicht übernehmen. Versuchen Sie File.open statt

Try this:

file = File.open('output.json').read 
data_hash = JSON.parse(file) 
pp data_hash 

wie für den Wert Druck krishna versuchen, diese (nach Parsing):

puts data_hash['name'] # this outputs krishna 

Viel Glück