JSON wird in Ruby direkt unterstützt und ist seit mindestens Ruby v1.9.3 verfügbar. Daher muss kein Gem installiert werden, es sei denn, Sie verwenden etwas Älteres. Verwenden require 'json'Sie einfach in Ihrem Code.
der Blechmann
Antworten:
559
Dies sieht aus wie JavaScript Object Notation (JSON) . Sie können JSON analysieren, das sich in einer Variablen befindet, z. B json_string.:
require 'json'
JSON.parse(json_string)
Wenn Sie einen älteren Ruby verwenden, müssen Sie möglicherweise den json gem installieren .
Es gibt auch andere Implementierungen von JSON für Ruby, die möglicherweise besser zu einigen Anwendungsfällen passen:
Sie können auch die Option symbolize_names auf true setzen, um Schlüssel als Symbole abzurufen. Beispiel:JSON.parse(string, symbolize_names: true) #=> {key: :value}
Nando Sousa
31
JSON wird direkt in Ruby unterstützt und ist seit mindestens Ruby v1.9.3 verfügbar. Daher muss kein Gem installiert werden, es sei denn, Sie verwenden etwas Älteres. Verwenden require 'json'Sie einfach in Ihrem Code.
der Blechmann
212
Nur um die Antworten ein wenig zu erweitern, was mit dem analysierten Objekt zu tun ist:
# JSON Parsing example
require "rubygems"# don't need this if you're Ruby v1.9.3 or higher
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
@LinusAn, da JSON doppelte Anführungszeichen um Zeichenfolgen erfordert. Siehe Zeichenfolge in der JSON-Definition ( json.org ): "Eine Zeichenfolge ist eine Folge von null oder mehr Unicode-Zeichen, die in doppelte Anführungszeichen gesetzt werden und Backslash-Escapezeichen verwenden."
Endorama
1
In vielen Fällen möchten Sie JSON.parsein einen Rettungsblock für einwickeln JSON::ParserError.
Johnml
JSON.parse("[#{value}]")[0]um den Fehler zu vermeidenA JSON text must at least contain two octets!
Rivenfall
39
Ab Ruby v1.9.3 müssen Sie keine Gems installieren, um JSON zu analysieren. Verwenden Sie einfach require 'json':
require 'json'
Sie einfach in Ihrem Code.Antworten:
Dies sieht aus wie JavaScript Object Notation (JSON) . Sie können JSON analysieren, das sich in einer Variablen befindet, z. B
json_string
.:Wenn Sie einen älteren Ruby verwenden, müssen Sie möglicherweise den json gem installieren .
Es gibt auch andere Implementierungen von JSON für Ruby, die möglicherweise besser zu einigen Anwendungsfällen passen:
quelle
JSON.parse(string, symbolize_names: true) #=> {key: :value}
require 'json'
Sie einfach in Ihrem Code.Nur um die Antworten ein wenig zu erweitern, was mit dem analysierten Objekt zu tun ist:
quelle
'{ "a": "bob" }'
ist gültig."{ 'a': 'bob' }"
ist nicht.JSON.parse
in einen Rettungsblock für einwickelnJSON::ParserError
.JSON.parse("[#{value}]")[0]
um den Fehler zu vermeidenA JSON text must at least contain two octets!
Ab Ruby v1.9.3 müssen Sie keine Gems installieren, um JSON zu analysieren. Verwenden Sie einfach
require 'json'
:Siehe JSON bei Ruby-Doc.
quelle
Es sieht aus wie eine JSON-Zeichenfolge. Sie können eine von vielen JSON-Bibliotheken verwenden und es ist so einfach wie:
quelle
Das ist etwas spät, aber ich bin auf etwas Interessantes gestoßen, das wichtig zu sein scheint.
Ich habe diesen Code versehentlich geschrieben und er scheint zu funktionieren:
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
Ruby integriert ist, sodass es keine Edelsteininstallation gibt.Ich verwende die Versionen 1.8.x und 1.9.x - die
json
Bibliothek ist also nicht integriert, aber in Version 2.x.Technisch gesehen ist dies der einfachste Weg, um die Daten in einer Version unter 2.0 zu extrahieren.
quelle
Diese Daten scheinen im JSON-Format zu sein.
Sie können diese JSON-Implementierung für Ruby verwenden , um sie zu extrahieren.
quelle
Ich schlage Oj vor, da es schneller als die Standard-JSON-Bibliothek ist.
https://github.com/ohler55/oj
( siehe Leistungsvergleiche hier )
quelle