/ / Utwórz zagnieżdżone skróty w ruby ​​i zapisz je w JSON - json, ruby, ruby-hash

Utwórz zagnieżdżone skróty w ruby ​​i zapisz je w JSON - json, ruby, ruby-hash

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 № 1

Spró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.