/ / रूबी में नेस्टेड हैश बनाएँ और इसे JSON - json, रूबी, रूबी-हैश में सहेजें

रूबी में नेस्टेड हैश बनाएं और इसे जेएसओएन - जेसन, रूबी, रूबी-हैश में सहेजें

हाय मैं रूबी में नया हूँ और मैं एक NSON हैश को JSON फ़ाइल में सहेजने की कोशिश कर रहा हूँ, अंतिम हैश इस तरह दिखता है:

{"**School**":{"*Students*":{ "Info":{},"Values":{} },"*Teachers*":{ "Info":{},"Values":{} } } }

लेकिन शुरू में हैश खाली होना चाहिए:

{"**School**":{} }

और फिर मुझे हर स्तर पर तत्वों को जोड़ना होगा, जैसे:

{"**School**":{} ,"**Hospital**":{} }

तथा

{"**School**":{ "*Students*":{} } ,"**Hospital**":{} }

तथा

{"**School**":{ "*Students*":{ "*Info*":{ "Name": "Varchar" },"*Values*":{ "Name": "Jane" } } } ,"**Hospital**":{} }

मैंने नीचे वाली चीज़ की तरह कोशिश की, लेकिन यह काम नहीं करता है:

hash = Hash.new

hash[ "**School**" ] = {"Student":{}}

hash[ "**School**" ][ "Student" ] = {"Info":{},"Values":{}}


File.open("saved.json","w") do |f|

f.write(hash.to_json)

आपके समय एवं मदद के लिए धन्यवाद।

उत्तर:

उत्तर № 1 के लिए 1

इसे इस्तेमाल करे...

hash = Hash.new
hash[ "**School**" ] = {}
hash[ "**School**" ][ "Student" ] = {}
hash[ "**School**" ][ "Student" ]["Info"] = {}
hash[ "**School**" ][ "Student" ]["Values"] = {}

यह खाली सामग्री के साथ वांछित संरचना में आपके हैश को इनिशियलाइज़ करेगा।


जवाब के लिए 2 № 2

आपकी समस्या यह है कि:

{"Student": {}}
# {:Student=>{}}

है

:Student

और नहीं

"Student"

एक स्ट्रिंग कुंजी को परिभाषित करने के लिए, उपयोग करें:

{"Student" => {}}

to_json अगर कुंजी एक प्रतीक या स्ट्रिंग है, तो परवाह नहीं करता है, और उन दोनों को एक ही प्रारूप के साथ निर्यात करता है:

require "json"
puts ({a: 1, "a" => 2}.to_json)
# {"a":1,"a":2}

यह डिबगिंग के लिए मदद नहीं करता है।