我正在从Twitter API中获取推文并在我的Rails后端进行处理。 我能够在我的数据库中创建推文,然后将推文呈现为JSON格式。 但是推文的某部分仍然显示为字符串。 如何将此特定部分转换为Ruby哈希,以便我可以访问键值对?
我已尝试使用.serializable_hash、.hash和.to_json,但数据类型要求不正确(需要数组),或者会添加更多转义字符。
.strip、.split 和 .gsub 也都无法满足需求。
当我输出该字符串时,它看起来像一个哈希表,但是我无法保存输出结果。
这是呈现json的方式:
"media": [
"{\"id\"=>1159941035461529600, \"id_str\"=>\"1159941035461529600\", \"indices\"=>[62, 85], \"media_url\"=>\"http://pbs.twimg.com/media/EBjwOeMVUAAVOia.jpg\", \"media_url_https\"=>\"https://pbs.twimg.com/media/EBjwOeMVUAAVOia.jpg\", \"url\"=>\"https://t.asdco/mFwUSlGEpv\", \"display_url\"=>\"pic.twitter.com/mFwUSlGEpv\", \"expanded_url\"=>\"https://twitter.com/CommonBlackGirI/status/1159941046161170432/photo/1\", \"type\"=>\"photo\", \"sizes\"=>{\"thumb\"=>{\"w\"=>150, \"h\"=>150, \"resize\"=>\"crop\"}, \"medium\"=>{\"w\"=>1122, \"h\"=>819, \"resize\"=>\"fit\"}, \"large\"=>{\"w\"=>1122, \"h\"=>819, \"resize\"=>\"fit\"}, \"small\"=>{\"w\"=>680, \"h\"=>496, \"resize\"=>\"fit\"}}}"
]
我尝试在序列化器文件中创建一个方法,但是由于它只是字符串,而不是可遍历的哈希表,所以这并没有起作用。
def media_url
tweet = self.object
tweet.media[0]
end
我想将上面的字符串转换成 Ruby 哈希,以便我可以获取每个推文的 media_url。
JSON.parse
似乎是你正在寻找的。 - max pleanerto_json
。media_url
没有被渲染,但其他东西被渲染了。 - tadmanh[:"media"][0]
处的对象不是有效的 JSON(它看起来像是一个通过to_s
转换为String
的Hash
)。如果你需要将Hash
转换为 JSON,方法是to_json
,但首先你应该解释一下这是如何生成的,或者只需使用twitter
gem,并不太担心实现。 - engineersmnky