रूबी / रेल - मैं चरित्र से बचने (या बाद में अनदेखा) कैसे रोक सकता हूं? - रूबी, भागने

मेरे पास कुछ जेसन है जो एक टेक्स्ट फ़ाइल में है जो पहले से ही बच निकला है:
"{"hey":"there"}"

जब मैं फ़ाइल को पढ़ने की कोशिश करता हूं:
File.open("filepath.txt").read
यह फिर से सामग्री से बच निकलता है, ताकि अब यह दोबारा बच निकले:
""{\"hey\":\"there\"}""

बचने से रोकने का कोई तरीका है?
या, क्या इसे पढ़ने और भागने के बाद स्ट्रिंग को अनदेखा करने का कोई आसान तरीका है?

धन्यवाद।

संपादित करें:
जवाब समझ में आता है, लेकिन मैं जेएसओएन को वैसे भी पार्स नहीं कर सकता।

irb(main):018:0> json
=> ""{\"hey\":\"there\"}"n"


irb(main):019:0> puts json
"{"hey":"there"}"
=> nil


irb(main):017:0> x = JSON.parse(json)
JSON::ParserError: 751: unexpected token at ""{"hey":"there"}"
"

अप्रत्याशित टोकन कहां है?

धन्यवाद।

संपादित करें 2:

इस SO सवाल का जवाब था

"समस्या यह है कि आपकी फ़ाइल वैध जेएस हो सकती है, लेकिन यह वैध JSON नहीं है, इसलिए जेएसओएन पुस्तकालय इसे अस्वीकार कर देते हैं।"

मुझे स्रोत (मुझे) पर भरोसा है, इसलिए यदि मैं दौड़ता हूं:
x = JSON.parse(eval(json))

यह काम करता हैं!

धन्यवाद।

उत्तर:

जवाब के लिए 2 № 1

यह फिर से सामग्री से बच निकलता है, ताकि अब यह दोबारा बच निकले:

यह वास्तव में नहीं है। यह केवल इस तरह से प्रदर्शित होता है, लेकिन यदि आप बैकस्लाशों को गिनने का प्रयास करते हैं, तो आप पाएंगे कि स्ट्रिंग फ़ाइल में समान है:

[email protected] ~ % cat > 1.txt
"{"hey":"there"}"
[email protected] ~ % pry
[1] pry(main)> a = File.open("1.txt").read
=> ""{\"hey\":\"there\"}"n"
[2] pry(main)> puts a
"{"hey":"there"}"
=> nil
[3] pry(main)> a.count "\"
=> 4

जवाब के लिए 6 № 2

इसे इस्तेमाल करे:

require "json"
JSON.parse(File.read("filepath.txt"))

संपादित करें:

आईआरबी से आउटपुट:

1.9.3p0 :006 > json = JSON.parse("{"hey":"there"}")
=> {"hey"=>"there"}

और यदि आप अभी भी एक स्ट्रिंग बनना चाहते हैं:

1.9.3p0 :007 > json = JSON.parse("{"hey":"there"}").to_s
1.9.3p0 :008 > puts json
{"hey"=>"there"}
=> nil

संबंधित सवाल
सबसे लोकप्रिय