我的问题的第一部分是,如果我有两个 JSON 文件(file_a.json、file_b.json),其中的记录按日期排序。我怎样才能轻松地将两者结合起来?
文件_a.json:
[
{
"Date": "2012-11-19",
"Open": 8.27,
"High": 8.35,
"Low": 8.21,
"Close": 8.34,
"Volume": 14606500,
"Adj Close": 8.34
},
{
"Date": "2012-11-15",
"Open": 8.11,
"High": 8.19,
"Low": 8.02,
"Close": 8.05,
"Volume": 14798900,
"Adj Close": 8.05
}
]
文件_b.json:
[
{
"Date": "2012-11-14",
"Open": 8.33,
"High": 8.36,
"Low": 8.1,
"Close": 8.13,
"Volume": 14175500,
"Adj Close": 8.13
},
{
"Date": "2012-11-13",
"Open": 8.36,
"High": 8.44,
"Low": 8.3,
"Close": 8.31,
"Volume": 11103900,
"Adj Close": 8.31
}
]
我考虑过读取第一个 JSON,收集所有字段,然后尝试将它们写入第二个 JSON(就像我在下面开始的那样),但是有没有更好/更简单的方法来简单地连接两个排序的 JSON假设第二个从第一个停止的地方开始的日期?
json = File.read("file_a.json")
quotes = JSON.parse(json)
$close = quotes.collect {|quote| quote['Adj Close']}
其次,如果我确实有一个 JSON(与上面相同的键)- master.json 并且想在某个指定日期拆分它,是否有一种简单的方法可以做到这一点?
谢谢你的帮助
最佳答案
你可以读取这两个文件并合并它们:
master = %w[a b].map { |f| JSON.parse File.read("file_#{f}.json") }.flatten
master
现在将包含来自两个文件的数据。
按某个日期拆分:
require 'date'
start_date = Date.parse("2012-11-15") - 365
master_updated = master.select {|h| Date.parse(h["Date"]) >= start_date }
master_updated
将只包含日期 >= 2011-11-15 的项目
要将其转换回 json,请使用 master.to_json
Here是现场演示
(链接不再有效)
关于ruby - 有没有一种在 Ruby 中组合两个 JSON 文件或拆分一个 JSON 的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13471066/