2015-11-27 2 views
0

Я новичок в Ruby.Создание Json в рубине для списка

Я хочу создать файл JSON для группы элементов.

Для этого я использую функцию each для получения данных. Я хочу создать JSON следующим образом для массива 4 длины,

'{ 
    "desc":{ 
    "1":"1st Value", 
    "2":"2nd value" 
    "3":"3rd Value", 
    "4":"4th value" 
    }, 
}' 

Это мой массив итерации,

REXML::XPath.each(doc, "//time") { |element1| 
    puts element1.get_text 
} 

Я знаю, что здесь есть простой код для генерации JSON,

require 'json/add/core' 

class Item < Struct.new(:id, :name); end 

chair = Item.new(1, 'chair') 
puts JSON.pretty_generate(chair) 

Этот синтаксис будет генерировать json следующим образом:

{ 
    "json_class": "Item", 
    "v": [ 
    1, 
    "chair" 
    ] 
} 

Но я не уверен, как это сделать, чтобы сделать JSON для моих элементов, как указано выше. Поиск Google не дал мне надлежащего способа сделать это.

Может ли кто-нибудь помочь мне здесь?

+0

Непонятно: из каких данных вы хотите создать выход JSON? И какой конкретный вывод JSON вы хотите? – charlysisto

+0

Ваш первый код JSON недействителен! Прежде всего, запятая отсутствует после «2-го значения», а во-вторых, есть запятая в конце «desc' hash. Перед отправкой, проверьте свой JSON с помощью [JSONLint] (http://jsonlint.com/). – Tobias

ответ

0

это означает, что это ?:

require 'json' 

my_arr= ["1st Value","2nd Value","3rd Value","4th Value"] 

tmp_str= {} 
tmp_str["desc"] = {} 

my_arr.each do |x| 
    tmp_str["desc"]["#{x[0]}"] = x 
end 
puts JSON.generate(tmp_str) 

вы можете перебирать массив строку, а затем взять строки в хэш object.JSON можно легко разобрать Hash objcect.

+0

, вы можете добавить больше объяснений в свой ответ. – Guanxi

+0

Не могли бы вы добавить некоторые детали, почему это должно работать? Кодовые ответы не очень полезны и подлежат удалению. – Cristik

Смежные вопросы