पर मैं http://hndroidapi.appspot.com/news/format/json/page/?appid=test पर रिमोट जेसन से डेटा खींच रहा हूं। जिस समस्या में मैं चल रहा हूं वह यह है कि यह एपीआई यूटीएफ -8 एन्कोडिंग को सही तरीके से संभालने के बिना जेएसओएन का निर्माण कर रहा है (अगर मैं यहां गलत हूं तो मुझे सही करें)। उदाहरण के लिए, परिणाम अभी पारित हो कि का हिस्साजेसन से खराब यूटीएफ -8 को संभालना, रूबी
{
"title":"IPad - please don€™t ding while you and I are asleep ",
"url":"http://modern-products.tumblr.com/post/25384729998/ipad-please-dont-ding-while-you-and-i-are-asleep",
"score":"10 points",
"user":"roee",
"comments":"18 comments",
"time":"1 hour ago",
"item_id":"4128497",
"description":"10 points by roee 1 hour ago | 18 comments"
}
सूचना don€™t
है। और यह एकमात्र प्रकार का चरित्र नहीं है जिस पर यह चकित हो रहा है। क्या डेटा कुछ भी साफ करने के लिए मैं कुछ भी कर सकता हूं, यह देखते हुए कि मैं एपीआई को नियंत्रित नहीं करता हूं?
संपादित करें:
यहाँ कैसे मैं JSON नीचे खींच कर रहा हूँ है:
hn_url = "http://hndroidapi.appspot.com/news/format/json/page/?appid=test"
url = URI.parse(hn_url)
# Attempt to get the json
req = Net::HTTP::Get.new(hn_url)
req.add_field('User-Agent', 'Test')
res = Net::HTTP.start(url.host, url.port) {|http| http.request(req) }
response = res.body
if response.nil?
puts "Bad response when fetching HN json"
return
end
# Attempt to parse the json
result = JSON.parse(response)
if result.nil?
puts "Error parsing HN json"
return
end
संपादित करें 2:
बस एपीआई GitHub पृष्ठ मिला। ऐसा लगता है कि यह एक उत्कृष्ट मुद्दा है। अभी तक सुनिश्चित नहीं करता है, तो किसी भी समाधान है कि मैं अपने अंत से कुछ नहीं कर सकता है: https://github.com/glebpopov/Hacker-News-Droid-API/issues/4
ऐसा लगता है कि आपके द्वारा प्राप्त किए जा रहे JSON प्रतिक्रिया निकाय में HTML-सुरक्षित प्रतीकों शामिल हो सकते हैं। मुझे एक नज़र में कोई भी बुरा वर्ण नहीं दिख रहा है, और मुझे लगता है कि प्रतिक्रिया 'सामग्री-प्रकार' शीर्षलेख 'एप्लिकेशन/जेसन' पर सेट है; charset = utf-8', जो सही दिखता है। आप प्रतिक्रिया शरीर कैसे प्राप्त कर रहे हैं? मैं 'देव HTTP क्लाइंट' या कर्ल जैसे ब्राउज़र टूल के साथ प्रतिक्रिया की जांच करने की कोशिश करता हूं, और देख सकता हूं कि आपका आवेदन वास्तविक प्रतिक्रिया से अलग हो रहा है या नहीं। यदि ऐसा है, तो आप इसे अपने कोड में गलत तरीके से संभालेंगे। –
धन्यवाद। मैंने संपादन में अपना कोड जोड़ा। मुद्दा यह है कि वे HTML- सुरक्षित प्रतीक हैं। लेकिन, यह यूरो प्रतीक और एक 'टीएम' प्रतीक नहीं होना चाहिए। यह एक apostrophe होना चाहिए। – hodgesmr
आप 'puts res.body' का उपयोग कर कंसोल में सटीक प्रतिक्रिया देख सकते हैं। क्या आप बाद में 'परिणाम' ऑब्जेक्ट के माध्यम से फंकी प्रतीकों को देख रहे हैं? –