2015-07-09 4 views
1

Я использую JBuilder Руби, и я хочу, чтобы создать хэш JSON, который выглядит так, как конечный результат:Использование JBuilder (Рубин), как создать массив хэшей

"must" : { 
    "ids" : { 
     "values" : [1,2] 
    }, 
    "range" : { 
     "visits" : 
     { 
      "gte" : 10 
     } 

    } 
} 

Имейте в виду, У меня нет существующего массива для перебора. Все примеры, на которые я смотрел, предполагают, что у меня есть массив. Я не. Я хочу создать этот JSON на лету.

+0

Что ваши исходные данные выглядят? – fny

+0

У меня нет ввода, вот что я имею в виду, когда говорю, что у меня нет существующего массива. Я хочу создать этот JSON на лету. У меня есть нулевые объекты. Предположим, у меня есть пустой слайдер для работы, и я хочу создать ответ JSON, который выглядит точно так же, как тот, который я вставил выше, с жестко закодированными значениями. –

ответ

1

Я не рекомендую использовать Jbuilder для статических данных. Вся цель Jbuilder - предоставить DSL для преобразования сложных графиков объектов в JSON. В этом случае, вы можете также просто преобразовать хэш Ruby, в JSON непосредственно:

require 'json' # You'll need some type of JSON library which provides `Hash#to_json` 
{ 
    must: { 
    ids: { 
     values: [1, 2] 
    }, 
    range: { 
     visits: { 
     gte: 10 
     } 
    } 
    } 
}.to_json 

Ради обучения, вот как вы бы построить ту же строку JSON с JBuilder вручную:

json = Jbuilder.new 

json.set! :object do 
    json.set! :must do 
    json.set! :ids, [1, 2] 
    end 
    json.set! :range do 
    json.set! :visits do 
     json.set! :gte, 10 
    end 
    end 
end.to_json # Note that Jbuilder even returns a Hash that need to be converted 
Смежные вопросы