Cześć, jestem nowy w Ruby i próbuję zapisać zagnieżdżony skrót w pliku JSON, końcowy skrót wygląda następująco:
{"**School**":{"*Students*":{ "Info":{},"Values":{} },"*Teachers*":{ "Info":{},"Values":{} } } }
Ale początkowo skrót musi zaczynać się pusty:
{"**School**":{} }
A potem muszę dodać elementy na każdym poziomie, takie jak to:
{"**School**":{} ,"**Hospital**":{} }
I
{"**School**":{ "*Students*":{} } ,"**Hospital**":{} }
I
{"**School**":{ "*Students*":{ "*Info*":{ "Name": "Varchar" },"*Values*":{ "Name": "Jane" } } } ,"**Hospital**":{} }
Próbowałem czegoś takiego jak ten poniżej, ale wydaje się, że nie działa:
hash = Hash.new
hash[ "**School**" ] = {"Student":{}}
hash[ "**School**" ][ "Student" ] = {"Info":{},"Values":{}}
File.open("saved.json","w") do |f|
f.write(hash.to_json)
Dziękuję za poświęcony czas i pomoc.
Odpowiedzi:
1 dla odpowiedzi № 1Spróbuj tego...
hash = Hash.new
hash[ "**School**" ] = {}
hash[ "**School**" ][ "Student" ] = {}
hash[ "**School**" ][ "Student" ]["Info"] = {}
hash[ "**School**" ][ "Student" ]["Values"] = {}
Spowoduje to zainicjowanie skrótu w pożądanej strukturze z pustą zawartością.
2 dla odpowiedzi nr 2
Twoim problemem jest to, że kluczem do:
{"Student": {}}
# {:Student=>{}}
jest
:Student
i nie
"Student"
Aby zdefiniować klucz ciągu, użyj:
{"Student" => {}}
to_json
wydaje się nie dbać o to, czy klucz jest symbolem lub łańcuchem i eksportuje je oba w tym samym formacie:
require "json"
puts ({a: 1, "a" => 2}.to_json)
# {"a":1,"a":2}
To nie pomaga w debugowaniu.