2011-02-06 33 views
23
ruby-1.9.2-p0 > require 'json' 
=> true 
ruby-1.9.2-p0 > hash = {hi: "sup", yo: "hey"} 
=> {:hi=>"sup", :yo=>"hey"} 
ruby-1.9.2-p0 > hash.to_json 
=> "{\"hi\":\"sup\",\"yo\":\"hey\"}" 
ruby-1.9.2-p0 > j hash 
{"hi":"sup","yo":"hey"} 
=> nil 

j hash đặt câu trả lời tôi muốn nhưng trả về nil.Làm cách nào để chuyển đổi chuỗi Hash thành chuỗi JSON trong Ruby 1.9?

hash.to_json trả về câu trả lời tôi muốn có dấu gạch chéo ngược. Tôi không muốn các dấu gạch chéo ngược.

+0

Lỗi sau? – Phrogz

+0

Tôi đã cập nhật câu hỏi với các giá trị STDOUT & return. – ma11hew28

+0

Tuyệt vời, tôi không j tồn tại. Chúng tôi thường sử dụng y để định dạng Hashes và Objects. –

Trả lời

34

Đó chỉ là vì String#inspect. Không có dấu gạch chéo ngược. Thử:

hjs = hash.to_json 
puts hjs 
10

Bạn đang đi đúng hướng. to_json chuyển đổi nó thành định dạng JSON. Đừng để đầu ra IRB đánh lừa bạn - nó không chứa bất kỳ dấu gạch chéo ngược nào.

Hãy thử điều này: puts hash.to_json và bạn sẽ thấy điều này: {"hi":"sup","yo":"hey"}

5

Tôi không có Ruby1.9 để kiểm tra, nhưng dường như bạn đang nhận được "kiểm tra" xem. Những dấu gạch chéo ngược không có ở đó, chúng chỉ là thoát khỏi dấu ngoặc kép. Chạy puts hash.to_json để kiểm tra.

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