Как вывести массив в виде JSON? - PullRequest
5 голосов
/ 03 марта 2012

У меня есть следующее:

@array.inspect
["x1", "x2", "adad"]

Я хотел бы иметь возможность отформатировать это в:

client.send_message(s, m, {:id => "x1", :id => "x2", :id => "adad" })
client.send_message(s, m, ???????)

Как я могу получить вывод @array в ??????? пробел как id?

Спасибо

Ответы [ 2 ]

11 голосов
/ 03 марта 2012

{:id => "x1", :id => "x2", :id => "adad" } не является допустимым хешем, поскольку у вас есть столкновение ключей

это должно выглядеть так:

{
  "ids": ["x1", "x2", "x3"]
}

Обновление:

@a = ["x1", "x2", "adad"]
@b = @a.map { |e| {:id => e} }

Тогда вы можете сделать b.to_json, если вы уже сделали require "json" уже

2 голосов
/ 03 марта 2012

Ну, обычно вы можете сделать что-то вроде этого:

Hash[@array.collect{|i| [:id, i]}]

Но это приведет к {: id => "adad"}, потому что первый элемент ударит все остальные: хэши в ruby ​​имеют уникальные ключи. Так что я не думаю, что есть супер-удивительный способ сделать это от руки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...