我有一个文件,其中包含多个未用逗号分隔的JSON对象:
{
"field" : "value",
"another_field": "another_value"
} // no comma
{
"field" : "value"
}
每个独立的对象都是有效的json对象。
有没有办法可以轻松处理这个文件?
在.NET中有一个具有以下功能的库: https://stackoverflow.com/a/29480032/2970729 https://www.newtonsoft.com/json/help/html/P_Newtonsoft_Json_JsonReader_SupportMultipleContent.htm
Ruby中有什么相同的东西吗?
答案 0 :(得分:1)
只要您的文件很简单,您可能希望执行以下操作:
# content = File.read(filename)
content =<<-EOF
{
"field" : "value",
"another_field": "another_value"
} // no comma
{
"field" : "value"
}
EOF
require 'json'
JSON.parse("[#{content.gsub(/\}.*?\{/m, '},{')}]")
#=> [{"field"=>"value", "another_field"=>"another_value"}, {"field"=>"value"}]
答案 1 :(得分:0)
yajl-ruby gem可在Ruby中处理串联的JSON。解析器可以从字符串或IO中读取。每个完整的对象都产生一个块。
require 'yajl'
File.open 'file.json' do |f|
Yajl.load f do |object|
# do something with object
end
end
有关其他选项(缓冲区大小,符号键等),请参见documentation。