it-swarm.com.de

Analysieren einer JSON-Zeichenfolge in Ruby

Ich habe eine Zeichenfolge, die ich in Ruby analysieren möchte:

string = '{"desc":{"someKey":"someValue","anotherKey":"value"},"main_item":{"stats":{"a":8,"b":12,"c":10}}}'

Gibt es eine einfache Möglichkeit, die Daten zu extrahieren?

335
Rod

Dies sieht aus wie JavaScript Object Notation (JSON) . Sie können JSON analysieren, das sich in einer Variablen befindet, z. json_string, wie folgt:

require 'json'
JSON.parse(json_string)

Wenn Sie einen älteren Ruby verwenden, müssen Sie möglicherweise json gem installieren.


Es gibt auch andere Implementierungen von JSON für Ruby, die für einige Anwendungsfälle besser geeignet sind:

516
Greg

Um die Antworten ein wenig zu erweitern, was mit dem analysierten Objekt zu tun ist:

# JSON Parsing example
require "rubygems"
require "json"

string = '{"desc":{"someKey":"someValue","anotherKey":"value"},"main_item":{"stats":{"a":8,"b":12,"c":10}}}'
parsed = JSON.parse(string) # returns a hash

p parsed["desc"]["someKey"]
p parsed["main_item"]["stats"]["a"]

# Read JSON from a file, iterate over objects
file = open("shops.json")
json = file.read

parsed = JSON.parse(json)

parsed["shop"].each do |shop|
  p shop["id"]
end
198
nevan king

Ab Ruby v1.9.3 müssen Sie keine Gems installieren, um JSON zu analysieren. Verwenden Sie einfach require 'json':

require 'json'

json = JSON.parse '{"foo":"bar", "ping":"pong"}'
puts json['foo'] # prints "bar"

Siehe JSON bei Ruby-Doc.

37
dav_i

Es sieht aus wie eine JSON-Zeichenfolge. Sie können eine von vielen JSON-Bibliotheken verwenden und das ist ganz einfach:

JSON.parse(string)
14
keymone

Das ist ein bisschen spät, aber ich bin auf etwas Interessantes gestoßen, das wichtig zu sein scheint, um einen Beitrag zu leisten.

Ich habe versehentlich diesen Code geschrieben und es scheint zu funktionieren:

require 'yaml'
CONFIG_FILE = ENV['CONFIG_FILE'] # path to a JSON config file 
configs = YAML.load_file("#{CONFIG_FILE}")
puts configs['desc']['someKey']

Ich war überrascht zu sehen, dass es funktioniert, da ich die YAML-Bibliothek verwende, aber es funktioniert.

Der Grund, warum es wichtig ist, ist, dass yaml in Ruby integriert ist, sodass keine Juwelen installiert werden.

Ich verwende die Versionen 1.8.x und 1.9.x - daher ist die Bibliothek json nicht integriert, sondern befindet sich in Version 2.x.

Technisch gesehen ist dies der einfachste Weg, die Daten in einer niedrigeren Version als 2.0 zu extrahieren.

7
guy mograbi

Ich schlage vor, Oj ist schneller als die Standard-JSON-Bibliothek.

https://github.com/ohler55/oj

( siehe Leistungsvergleiche hier )

4
damianmr

Diese Daten scheinen im JSON-Format zu sein.

Sie können dieses JSON-Implementierung für Ruby verwenden, um es zu extrahieren.

4
Justin Ethier