लिए JSON पुस्तकालय उपलब्ध होने के लिए आपको अपने पैकेज प्रबंधक से libjson-ruby
स्थापित करने के लिए हो सकता है: यह है कि एक के लिए क्रमांकन एपीआई तरह दिखता है।
'json' पुस्तकालय का उपयोग करें:
require 'json'
JSON करने के लिए एक वस्तु को बदलने के लिए (इन 3 तरीके बराबर हैं):
JSON.dump object #returns a JSON string
JSON.generate object #returns a JSON string
object.to_json #returns a JSON string
किसी ऑब्जेक्ट को JSON टेक्स्ट बदलने के लिए (इन 2 तरीके बराबर हैं):
JSON.load string #returns an object
JSON.parse string #returns an object
यह आपके स्वयं के वर्गों से वस्तुओं के लिए थोड़ा और कठिन होगा। निम्न वर्ग के लिए, to_json "\"#<A:0xb76e5728>\""
जैसे कुछ उत्पन्न करेगा।
class A
def initialize a=[1,2,3], b='hello'
@a = a
@b = b
end
end
यह संभवतः वांछनीय नहीं है। जेएसओएन के रूप में अपनी ऑब्जेक्ट को प्रभावी ढंग से क्रमबद्ध करने के लिए, आपको अपनी खुद की to_json विधि बनाना चाहिए। इसके साथ जाने के लिए, एक_json क्लास विधि उपयोगी होगी। तुम इतनी तरह अपने वर्ग का विस्तार कर सकते हैं: object.from_json! string
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
तो फिर तुम object.to_json
उपयोग कर सकते हैं JSON के serialise करने के लिए और बचाया कॉपी करने के लिए:
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
आप एक 'JSONable' वर्ग से इनहेरिट द्वारा इस को स्वचालित कर सकता है वह स्थिति जिसे ऑब्जेक्ट में JSON स्ट्रिंग के रूप में सहेजा गया था।
शायद ध्वनि बेवकूफ हो, लेकिन क्या आपको वास्तव में 'जसन' की आवश्यकता थी? मैंने जेएसओएन रत्नों के साथ काम किया और उन्होंने एक आकर्षण की तरह काम किया। – DarkDust