提问人:Jake Statefarm 提问时间:3/21/2023 最后编辑:Jake Statefarm 更新时间:3/21/2023 访问量:44
在 Ruby 中转换为 JSON
convert to JSON in Ruby
问:
我在文本文件中有以下行,并使用 File.foreach 进行迭代。我想创建这些的JSON格式。我该如何编码?当我打印哈希值时,Camaro 会覆盖 Mustang 信息。
#textfile#
Blue A Mustang
Red B Camaro
File.each("textfile") di |line|
fields = line.split
field1 = fields.first
field2 = fields.[1]
field3 = fields.last
puts field1
puts field2
puts field3
myhash['color'] = field1
myhash['parkingspot'] = field2
myhash['car'] = field3
end
提前致谢! 杰克
我尝试推送哈希
答:
1赞
steev
3/21/2023
#1
在您的代码中,您有一个包含三个索引的调用:、 和 。循环访问文件的每一行,以及每次覆盖这三个索引的值时。
取而代之的是,我们可以制造一辆汽车,每辆汽车都包含这样的.然后,我们可以使用该方法将 cars 数组转换为 JSON 字符串,如下所示:Hash
myhash
color
parkingspot
car
array
Hash
JSON.generate
require 'json'
cars = []
File.foreach("textfile") do |line|
fields = line.split
car = {}
car['color'] = fields.first
car['parkingspot'] = fields[1]
car['car'] = fields.last
cars << car
end
puts JSON.generate(cars)
哪个输出[{"color":"Blue","parkingspot":"A","car":"Mustang"},{"color":"Red","parkingspot":"B","car":"Camaro"}]
编辑:
如果您想要将哈希值作为每辆车的钥匙,您可以执行以下操作:Hash
parkingspot
require 'json'
cars = {}
File.foreach("textfile") do |line|
fields = line.split
car = {}
car['color'] = fields.first
car['car'] = fields.last
cars[fields[1]] = car
end
puts JSON.generate(cars)
哪个输出{"A":{"color":"Blue","car":"Mustang"},"B":{"color":"Red","car":"Camaro"}}
评论
0赞
Jake Statefarm
3/21/2023
谢谢@steev。如何实现这种格式?{“A”:[{“color”:“蓝色”,“car”:“野马”}],“B”:[{“color”:“红色”,“car”:“Camaro”}]}
0赞
steev
3/21/2023
我更新了答案以输出哈希的哈希,但是在您的评论中,您有一个不必要的数组包裹在每辆车的属性周围。
评论
di