Wbudowany from_xml
Railsy Hash
Metoda zrobi dokładnie to, co chcesz. W celu zdobycia response.parsed_response
prawidłowo odwzorowane do mieszania, musisz gsub()
się z nowymi liniami:
hash = Hash.from_xml(response.parsed_response.gsub("\n", ""))
hash #=> {"Result"=>{"success"=>"true"}}
w kontekście analizowania hash w Rails, przedmioty String
typu są not substantively different niż Symbol
od ogólna perspektywa programowania. Jednakże, można zastosować metodę Rails symbolize_keys
do wyjścia:
symbolized_hash = hash.symbolize_keys
#=> {:Result=>{"success"=>"true"}}
Jak widać, symbolize_keys
nie działa na wszystkich zagnieżdżonych skrótów, ale potencjalnie mogłyby iterację wewnętrznych mieszań i zastosować symbolize_keys
.
Ostatnim elementem układanki jest zamiana ciągu "true"
na boolean true
. AFAIK, nie ma sposobu, aby to zrobić na hash w miejscu, ale jeśli iteracji/działających na nim, można potencjalnie wdrożyć rozwiązanie jak ten suggested in this post:
def to_boolean(str)
return true if str == "true"
return false if str == "false"
return nil
end
Zasadniczo, po osiągnięciu wewnętrzna para klucz-wartość, należy zastosować to_boolean()
do wartości, która jest obecnie ustawiona na "true"
. W twoim przykładzie wartością zwracaną jest boolean true
.
http://www.railstips.org/blog/archives/2008/08/11/parsing-xml-with-ruby/ –