2012-03-03 22 views
5

:Bir Diziyi JSON olarak nasıl çıktılar? Ben şu var

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

Ben o biçimlendirmek edebilmek istiyorum:

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

nasıl içinde @array çıkış olabilir ??????? kimlik olarak alan?

Teşekkür

Eğer bir anahtar çarpışma beri
+0

Bir hash'ın anahtarları benzersizdir. Bunu denerseniz, ": id" için bu değerlerden yalnızca biriyle sonuçlanırsınız. Bunun yerine bir kimlik listesi istemediğinden emin misin? – jdl

+0

Muhtemelen bu doğrudur, ancak bu, LinkedIn gem'in onu aldığı yoldur. Diziyi bu tür bir çıktıya nasıl biçimlendirebileceğime dair herhangi bir fikir var mı? – AnApprentice

cevap

11

{:id => "x1", :id => "x2", :id => "adad" } geçerli bir karma değil

o gibi görünmelidir:

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

Güncelleme:

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

Sonra yapabilirsiniz b.to_json, yaptığınız varsayılırsa require "json" zaten

+0

Muhtemelen bu doğrudur, ancak bu, LinkedIn gem'in onu aldığı yoldur. Diziyi bu tür bir çıktıya nasıl biçimlendirebileceğime dair herhangi bir fikir var mı? – AnApprentice

+0

Örnek verebilir misiniz? – Zepplock

+0

Elbette, nasıl bir örnek? – AnApprentice

1

Eh normalde böyle bir şey yapabileceğini:

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

Ama bu neden olacaktır {: id => "adad"} ilk öğe her şey yumruk çünkü: Ruby karmaları var benzersiz anahtarlar. Bu yüzden bunu yapmak için süper harika bir yol olduğunu düşünmüyorum.