2011-02-06 18 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 जो उत्तर मैं चाहता हूं उसे रखता है लेकिन nil देता है।रूबी 1.9 में एक हैश को JSON स्ट्रिंग में कैसे परिवर्तित करूं?

hash.to_json उत्तर देता है जो मैं बैकस्लाश के साथ चाहता हूं। मैं बैकस्लाश नहीं चाहता।

+0

क्या बैकस्लैश? – Phrogz

+0

मैंने STDOUT और वापसी मूल्यों के साथ प्रश्न अपडेट किया। – ma11hew28

+0

अद्भुत, मैं अस्तित्व में नहीं था। हम अक्सर हेश और ऑब्जेक्ट्स को स्वरूपित करने के लिए वाई का उपयोग करते हैं। –

उत्तर

34

यह सिर्फ String#inspect की वजह से है। कोई बैकस्लाश नहीं है। आज़माएं:

hjs = hash.to_json 
puts hjs 
10

आप सही रास्ते पर हैं। to_json इसे जेएसओएन प्रारूप में परिवर्तित करता है। आईआरबी आउटपुट को मूर्ख मत होने दें - इसमें कोई बैकस्लैश नहीं है।

इस प्रयास करें: puts hash.to_json और आप इस देखना चाहिए: {"hi":"sup","yo":"hey"}

5

मैं परीक्षण करने के लिए Ruby1.9 की जरूरत नहीं है, लेकिन जाहिरा तौर पर आप "निरीक्षण" दृश्य हो रही है। वे बैकस्लाश वहां नहीं हैं, वे सिर्फ उद्धरण से बच रहे हैं। जांचने के लिए puts hash.to_json चलाएं।

संबंधित मुद्दे