Damit die JSON-Bibliothek verfügbar ist, müssen Sie sie möglicherweise libjson-ruby
von Ihrem Paketmanager installieren .
So verwenden Sie die 'json'-Bibliothek:
require 'json'
So konvertieren Sie ein Objekt in JSON (diese drei Möglichkeiten sind gleichwertig):
JSON.dump object
JSON.generate object
object.to_json
So konvertieren Sie JSON-Text in ein Objekt (diese beiden Möglichkeiten sind gleichwertig):
JSON.load string
JSON.parse string
Für Objekte aus Ihren eigenen Klassen wird es etwas schwieriger. 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 effektiv als JSON zu serialisieren, sollten Sie Ihre eigene to_json-Methode erstellen. Zu diesem Zweck wäre eine from_json-Klassenmethode hilfreich. Sie können Ihre Klasse folgendermaßen 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
Sie können dies automatisieren, indem Sie von einer 'JSONable'-Klasse erben:
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
Anschließend können Sie object.to_json
in JSON serialisieren und object.from_json! string
den gespeicherten Status, der als JSON-Zeichenfolge gespeichert wurde, in das Objekt kopieren.
require 'json'
? Ich habe mit den JSON-Edelsteinen gearbeitet und sie haben wie ein Zauber funktioniert.