2012-03-03 22 views
5

Tôi đã điều sau đây:Làm cách nào để xuất một mảng thành JSON?

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

Tôi muốn để có thể định dạng đó để:

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

Làm thế nào tôi có thể có đầu ra @array trong ??????? không gian như một id?

Cảm ơn

+0

Các khóa của băm là duy nhất. Bạn sẽ kết thúc với chỉ một trong những giá trị cho ': id' nếu bạn thử điều này. Bạn có chắc là bạn không yêu cầu danh sách ID thay thế không? – jdl

+0

Đó có thể là sự thật nhưng đó là cách mà viên đá quý LinkedIn nhận nó. Bất kỳ ý tưởng về cách tôi có thể định dạng mảng vào loại đầu ra đó? – AnApprentice

Trả lời

11

{:id => "x1", :id => "x2", :id => "adad" } không phải là một hash hợp lệ kể từ khi bạn có một vụ va chạm chính

nó sẽ giống như thế:

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

Cập nhật:

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

Sau đó, bạn có thể làm b.to_json, giả sử bạn đã thực hiện require "json" đã

+0

Đó có thể là sự thật nhưng đó là cách mà viên đá quý LinkedIn nhận nó. Bất kỳ ý tưởng về cách tôi có thể định dạng mảng vào loại đầu ra đó? – AnApprentice

+0

Bạn có thể cung cấp một ví dụ không? – Zepplock

+0

Điều chắc chắn, loại ví dụ nào? – AnApprentice

1

Vâng thường bạn có thể làm một cái gì đó như thế này:

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

Nhưng điều đó sẽ dẫn đến {: id => "Adad"} vì phần tử đầu tiên sẽ đấm tất cả các phần còn lại: băm trong ruby ​​có các khóa duy nhất. Vì vậy, tôi không nghĩ rằng có một cách siêu tuyệt vời để làm điều này offhand.

Các vấn đề liên quan