2012-03-03 13 views
5

Mam następujący:Jak wyprowadzić tablicę jako JSON?

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

Chciałbym móc format, który do:

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

Jak mogę mieć wyjście @array w ??????? przestrzeń jako identyfikator?

Dzięki

+0

Klucze skrótu są niepowtarzalne. Jeśli spróbujesz tego, otrzymasz tylko jedną z tych wartości dla ': id'. Czy na pewno nie prosisz o listę identyfikatorów? – jdl

+0

To pewnie prawda, ale tak właśnie wygląda ten klejnot na LinkedIn. Jakieś pomysły na to, jak sformatować tablicę do tego typu danych wyjściowych? – AnApprentice

Odpowiedz

11

{:id => "x1", :id => "x2", :id => "adad" } nie jest poprawnym hash skoro masz klucz kolizji

powinno to wyglądać tak:

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

Aktualizacja:

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

Następnie można zrobić b.to_json, zakładając, że wykonałeś require "json" już

+0

To pewnie prawda, ale tak właśnie wygląda posąg LinkedIn. Jakieś pomysły na to, jak sformatować tablicę do tego typu danych wyjściowych? – AnApprentice

+0

Czy możesz podać przykład? – Zepplock

+0

Jasne, jaki przykład? – AnApprentice

1

No normalnie mógłby zrobić coś takiego:

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

Ale to spowoduje {id => „Adad”}, ponieważ pierwszy element będzie uderzać całą resztę: mieszań w Ruby mieć unikalne klucze. Więc nie sądzę, że jest super sposób na zrobienie tego od ręki.

Powiązane problemy