我不是红宝石的家伙,我只是在电视上播放一个。我必须修改某人的旧Cron作业以下拉一些JSON并将其转换为对象。
这是代码
raw_json = Net::HTTP.get(URI.parse("url removed to protect the innocent"))
tags = ActiveSupport::JSON.decode(raw_json)
puts tags.count
tags.count将准确地跟踪为5,但是THAT LINE会立即导致崩溃,如下所示:
5 #the accurate count!
rake aborted!
undefined method `count' for false:FalseClass
什么是折衷?
答案 0 :(得分:1)
所以我不知道这里发生了什么,但是JSON.decode 应该给你一个哈希,它没有count方法。它确实有一个尺寸方法
tags.size
如果这不起作用,请尝试执行p标记,或者放置tags.class.name以尝试找出您正在使用的内容
答案 1 :(得分:1)
raw_json
的内容是什么?似乎正在发生的事情是ActiveSupport::JSON#decode
返回false(因此undefined method 'count' for false:FalseClass
)。我认为JSON#decode
仅在给定空字符串时返回false,这意味着HTTP#get
返回空字符串。检查raw_json
,看看它是否包含您的期望。
答案 2 :(得分:0)
显然标签是假的,这可能意味着你的Net :: HTTP.get失败了(我猜你的网址是错误的)。 尝试打印标签以查看它是什么。 (无论如何,我猜你应该使用有效的URI)
答案 3 :(得分:0)
问题在于:
>> ActiveSupport::JSON::decode("")
=> false
>> ActiveSupport::JSON::decode("false")
=> false
这是一种非常奇怪的行为。