gpt4 book ai didi

ruby - JSON 文本必须至少包含两个八位字节! (JSON::解析器错误)

转载 作者:数据小太阳 更新时间:2023-10-29 07:15:03 27 4
gpt4 key购买 nike

我正在使用读取 .json 文件的 Ruby 脚本。

这是 JSON 文件:

{
"feed.xml": "93d5b140dd2b4779edef0347ac835fb1",
"index.html": "1cbe25936e392161bad6074d65acdd91",
"md5.json": "655d7c1dbf83a271f348a50a44ba4f6a",
"test.sh": "9be192b1b5a9978cb3623737156445fd",
"index.html": "c064e204040cde216d494776fdcfb68f",
"main.css": "21b13d87db2186d22720e8c881a78580",
"welcome-to-jekyll.html": "01d7c7d66bdeecd9cd69feb5b4b4184d"
}

它是完全有效的,并且在尝试读取它之前会检查它是否存在。示例:

if File.file?("md5.json")
puts "MD5s exists"
mddigests = File.open("md5.json", "r")
puts "MD5s" + mddigests.read
items = JSON.parse(mddigests.read) <--- Where it all goes wrong.
puts items["feed.xml"]

在那之前一切正常:

MD5s exists
MD5s{
"feed.xml": "93d5b140dd2b4779edef0347ac835fb1",
"index.html": "1cbe25936e392161bad6074d65acdd91",
"md5.json": "655d7c1dbf83a271f348a50a44ba4f6a",
"test.sh": "9be192b1b5a9978cb3623737156445fd",
"index.html": "c064e204040cde216d494776fdcfb68f",
"main.css": "21b13d87db2186d22720e8c881a78580",
"welcome-to-jekyll.html": "01d7c7d66bdeecd9cd69feb5b4b4184d"
}
common.rb:156:in `initialize': A JSON text must at least contain two octets! (JSON::ParserError)

我已经搜索并尝试了很多不同的东西,但都无济于事。我很难过。谢谢!

最佳答案

您重复调用了 read(),但一切都出错了。用变量 mddigests 替换对 read() 的第二次调用,一切都应该没问题。

这段代码应该像您期望的那样工作:

if File.file?("md5.json")
puts "MD5s exists"
mddigests = File.open("md5.json", "r")
digests = mddigests.read
puts "MD5s" + digests
items = JSON.parse(digests) #<--- This should work now!
puts items["feed.xml"]
end

原因是文件指针在第一个 read() 之后移动,而到第二个 read() 时,它位于文件末尾,因此至少需要 2 个八位字节的消息。

关于ruby - JSON 文本必须至少包含两个八位字节! (JSON::解析器错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37039892/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com