# File lib/rubytter.rb, line 191 def self.structize(data) case data when Array data.map{|i| structize(i)} when Hash class << data def id self[:id] end def method_missing(name, *args) self[name] end def symbolize_keys! each do |key, value| self[(key.to_sym rescue key) || key] = value end end end data.keys.each do |k| case k when String, Symbol # String しかまず来ないだろうからこの判定はいらない気もするなぁ data[k] = structize(data[k]) else data.delete(k) end end data.symbolize_keys! else case data when String CGI.unescapeHTML(data) # ここで unescapeHTML すべきか悩むところではある else data end end end