我有一个打开并解析json文件的工作方法。现在我正在尝试遍历json文件的目录并显示它们的内容。
单个文件的工作方法:
def aperson
File.open("people/Elvis Presley.json") do |f|
parse = JSON.parse(f.read)
end
end
遍历目录的非工作方法:
16. def list
17. Dir.glob('people/*').each do |f|
18. parse = JSON.parse(f)
19 end
20. end
我的错误是:
/Users/ad/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/json/common.rb:148:in `parse': 743: unexpected token at 'people/Elvis Presley.json' (JSON::ParserError)
from /Users/ad/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/json/common.rb:148:in `parse'
from app.rb:18:in `block in list'
from app.rb:17:in `each'
from app.rb:17:in `list'
from app.rb:24:in `<main>'
目录中的所有文件都具有相同的内容,并且是根据JSONlint的valis。
非常感谢任何帮助。
答案 0 :(得分:8)
您尝试将文件名解析为JSON,但这不起作用。
相反,您需要先读取文件:
parse = JSON.parse(File.read(f))
答案 1 :(得分:3)
不确定,但是你可以尝试解析文件内容而不是文件名:
parse = JSON.parse( File.read f )
答案 2 :(得分:1)
在您的非工作代码中,f
只是展开文件名的字符串。因此,您需要在块中收到文件名后读取文件。
写作时,@ nneonneo已经为您提供了解决方案。所以我不再给予。