Попробуйте блочную версию scan
:
count = 0
json_string.scan(/\w+/) { count += 1 }
Если вы не хотите читать весь файл сразу в память:
count = 0
File.new("test.json").each_line do |line|
line.scan(/\w+/) { count += 1 }
end
Это предполагает, конечно,что ваш JSON-файл отформатирован (например, с помощью prettify_json.rb). Он не принесет особой пользы, если все в одной строке, очевидно.