json - 如何在 Ruby 中创建 JSON 对象

标签 json ruby parsing

我正在使用 Ruby 创建一个 JSON 文件。 我需要在 JSON 文件中创建对象“companies”。

预期结果:

{"companies":[
    {\"label\":\"Wayfair \",\"values\":[54]},
    {\"label\":\"Move24 \",\"values\":[29]},
    {\"label\":\"Auto1 \",\"values\":[23]},
...
]}

我得到了什么:

[  
   "{\"label\":\"Wayfair \",\"values\":[54,54]}",
   "{\"label\":\"Move24 \",\"values\":[29,29]}",
   "{\"label\":\"GetYourGuide \",\"values\":[28,28]}",
   "{\"label\":\"Auto1.com \",\"values\":[20,20]}", ...
]

我的代码:

data_hash = data_hash.map {|k,v| {label: k, values: v}}

companies_json = []

data_hash.each do |hash|
  companies_json << hash.to_json
end

File.open('companies.json', 'w') do |f|
  f << companies_json
end

最佳答案

问题的核心是您正在创建一个 JSON 字符串数组,而不是一个数组,然后创建该 JSON。而不是:

companies_json = []

data_hash.each do |hash|
  companies_json << hash.to_json
end

做:

companies = []

data_hash.each do |hash|
  companies << hash
end

companies_json = companies.to_json

关于json - 如何在 Ruby 中创建 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40072448/

相关文章:

java - 无法反序列化 `java.util.ArrayList` 的实例

ruby-on-rails - 将 build_command 与 CruiseControl.rb 一起使用

c++ - 在 Spirit:Qi 中构建自定义表达式树(没有 Utree 或 Boost::Variant)

c# - 解析 FtpWebRequest ListDirectoryDe​​tails 行

parsing - 单词 "lexer"是单词 "parser"的同义词吗?

php - 如何抓取特定的API数据

javascript - AngularJS:使用 "ng-click"并获取特定的 JSON 文件

arrays - 获取 ruby​​ 数组中特定模式的出现次数

javascript - 如何将 JSON 对象从 Java/Prime Faces 传递到 GOJS javascript 文件

带有 "watchdog"的 Ruby 线程