File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -16,11 +16,19 @@ def self.encode(object) #:nodoc:
1616 end
1717
1818 def self . symbolize_keys ( object ) #:nodoc:
19- return object unless object . is_a? ( Hash )
20- object . inject ( { } ) do |result , ( key , value ) |
21- new_key = key . is_a? ( String ) ? key . to_sym : key
22- new_value = value . is_a? ( Hash ) ? symbolize_keys ( value ) : value
23- result . merge! new_key => new_value
19+ case object
20+ when Array
21+ object . map do |value |
22+ symbolize_keys ( value )
23+ end
24+ when Hash
25+ object . inject ( { } ) do |result , ( key , value ) |
26+ new_key = key . is_a? ( String ) ? key . to_sym : key
27+ new_value = symbolize_keys ( value )
28+ result . merge! new_key => new_value
29+ end
30+ else
31+ object
2432 end
2533 end
2634
Original file line number Diff line number Diff line change @@ -111,7 +111,22 @@ def self.encode(string)
111111 end
112112
113113 it 'allows for symbolization of keys' do
114- MultiJson . decode ( '{"abc":{"def":"hgi"}}' , :symbolize_keys => true ) . should == { :abc => { :def => 'hgi' } }
114+ [
115+ [
116+ '{"abc":{"def":"hgi"}}' ,
117+ { :abc => { :def => 'hgi' } }
118+ ] ,
119+ [
120+ '[{"abc":{"def":"hgi"}}]' ,
121+ [ { :abc => { :def => 'hgi' } } ]
122+ ] ,
123+ [
124+ '{"abc":[{"def":"hgi"}]}' ,
125+ { :abc => [ { :def => 'hgi' } ] }
126+ ] ,
127+ ] . each do |example , expected |
128+ MultiJson . decode ( example , :symbolize_keys => true ) . should == expected
129+ end
115130 end
116131 end
117132 end
You can’t perform that action at this time.
0 commit comments