1

我的问题的第一部分是,如果我有两个 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 并且想在某个指定日期拆分它,有没有一种简单的方法可以做到这一点?

谢谢你的帮助

4

1 回答 1

3

您可以读取这两个文件并将它们合并:

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

是一个现场演示

(链接不再有效)

于 2012-11-20T11:52:24.377 回答