Каков наиболее элегантный способ преобразования между форматом хеширования JSON и реальным форматом хеширования? в рубине? - PullRequest
0 голосов
/ 28 февраля 2012

Это хеш, с которым я столкнулся (хотя исходный код, который я отправляю, имеет только секции, указывающие на массив):

{"sections" => {
 "0" => {},
 "1" => {}
}}

Это должно быть

{"sections" => [
 {},
 {}
]}

В идеале, я бы хотел расширить класс Hash ... но мой мозг в настоящий момент зажарен.

спасибо.

это мой текущий прогресс:

 def un_json
    self.each do |k, v|
      if v.is_a?(Hash) and k.is_a?(Number)
        # iterate over k's objects, then remove k from self
      end
    end
  end

Ответы [ 3 ]

2 голосов
/ 28 февраля 2012

со стандартной библиотекой ruby ​​json.

require 'json'

j = '{"sections": {
       "0": {},
       "1": {}
     }}'

p JSON.parse(j)

# {"sections"=>{"0"=>{}, "1"=>{}}}
1 голос
/ 28 февраля 2012
array = []
hash['sections'].each do |i,val|
  array[i.to_i] = val
end
hash['sections'] = array
0 голосов
/ 28 февраля 2012

Вот один быстрый и грязный способ:

h = {"sections" => {
                     "0" => {},
                     "1" => {}
                   }}
result={}
h.each do |k,v|
  result[k]=v.values
end

result.to_json

возвращается:

"{\"sections\":[{},{}]}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...