Für die JSON-Bibliothek zur Verfügung stehen, können Sie libjson-ruby
von Ihrem Paketmanager installieren.
die 'json' Bibliothek zu verwenden:
require 'json'
Um ein Objekt zu JSON (diese 3 Möglichkeiten sind äquivalent) zu umwandeln:
JSON.dump object #returns a JSON string
JSON.generate object #returns a JSON string
object.to_json #returns a JSON string
zu konvertieren JSON Text auf ein Objekt (das 2 Wege sind gleichwertig):
JSON.load string #returns an object
JSON.parse string #returns an object
Es wird etwas schwieriger für Objekte aus Ihren eigenen Klassen. Für die folgende Klasse erzeugt to_json so etwas wie "\"#<A:0xb76e5728>\""
.
class A
def initialize a=[1,2,3], b='hello'
@a = a
@b = b
end
end
Dies ist wahrscheinlich nicht wünschenswert. Um Ihr Objekt als JSON serialisieren zu können, sollten Sie Ihre eigene to_json-Methode erstellen. Um damit zu gehen, wäre eine from_json Klassenmethode nützlich. Sie könnten Ihre Klasse wie so erweitern:
class A
def to_json
{'a' => @a, 'b' => @b}.to_json
end
def self.from_json string
data = JSON.load string
self.new data['a'], data['b']
end
end
du von einem ‚JSONable‘ Klasse durch Erben automatisieren könnte:
class JSONable
def to_json
hash = {}
self.instance_variables.each do |var|
hash[var] = self.instance_variable_get var
end
hash.to_json
end
def from_json! string
JSON.load(string).each do |var, val|
self.instance_variable_set var, val
end
end
end
Dann Sie object.to_json
verwenden können, um JSON zu serialise und object.from_json! string
die gespeicherte kopieren Status, der als JSON-String für das Objekt gespeichert wurde.
Könnte klingen dumm, aber haben Sie eigentlich 'json'' erfordern? Ich arbeitete mit den JSON-Edelsteinen und sie arbeiteten wie ein Zauber. – DarkDust