【发布时间】:2014-07-07 15:30:59
【问题描述】:
我有几个 nx3 数组要用 JSON 编写,以便可以在 Ruby 中进一步读取。
到目前为止,我已完成代码,但JSON.parse 在将第二个数组写入文件时返回错误。如何编写 JSON 以便可以单独读取每个数组?
这里是代码和写好的 JSON 文件。
require 'json'
wp = []
wp[0]=[704/4,1124/4,0]
wp[1]=[704/4,1608/4,0]
wp[2]=[942/4,1608/4,0]
a = wp.map{|wp|{x: wp[0].to_i, y:wp[1].to_i, z:wp[2].to_i}}
wp2 = []
wp2[0]=[7055/4,1124/4,0]
wp2[1]=[704/4,1608/4,0]
wp2[2]=[942/4,1608/4,0]
wp2[3]=[942/4,2107/4,0]
a2 = wp2.map{|wp2|{x: wp2[0].to_i, y:wp2[1].to_i, z:wp2[2].to_i}}
File.open(".../temp.json","w") do |f|
f.write(a.to_json)
end
File.open(".../temp.json","a+") do |f|
f.write(a2.to_json)
end
f = open(".../temp.json")
jon = f.read
#This completes teh writing
psd = JSON.parse(jon)
psd.each do |xo|
print xo["y"].to_i,"\n"
end
当文件中只有一个数组被写入时,它会被正确读取,但当第二个数组被写入时,它会正确写入,但会出错:
(JSON::ParserError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/json/common.rb:155:in `parse'
from jsont.rb:35:in `<main>'
"The JSON.parse(jon) gives Error."
[{"x":176,"y":281,"z":0},{"x":176,"y":402,"z":0},{"x":235,"y":402,"z":0},{"x":235,"y":526,"z":0},{"x":322,"y":526,"z":0},{"x":448,"y":526,"z":0},{"x":508,"y":526,"z":0},{"x":508,"y":640,"z":0},{"x":577,"y":640,"z":0},{"x":577,"y":669,"z":0},{"x":718,"y":669,"z":0}][{"x":1763,"y":281,"z":0},{"x":176,"y":402,"z":0},{"x":235,"y":402,"z":0},{"x":235,"y":526,"z":0},{"x":322,"y":526,"z":0},{"x":448,"y":526,"z":0},{"x":508,"y":526,"z":0},{"x":508,"y":640,"z":0},{"x":577,"y":640,"z":0},{"x":577,"y":669,"z":0},{"x":718,"y":669,"z":0}]
您会注意到,在 JSON 文件中,两个数组已连接在一起。我知道这是导致错误的原因。但是我该如何纠正它,以便我能够以二维数组的形式访问每个坐标?不知道之前要写多少个数组。
【问题讨论】:
-
当您提出问题时,将您的代码和数据减少到演示/重现问题所需的最低限度。除此之外的任何事情都只会妨碍人们为您提供帮助。