1

私の質問の最初の部分は、日付でソートされたレコードを含む 2 つの JSON ファイル (file_a.json、file_b.json) がある場合です。2つを簡単に組み合わせるにはどうすればよいですか?

ファイル_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 を読み取り、すべてのフィールドを収集してから、それらを 2 番目の JSON (以下で開始したようなもの) に書き込もうとしましたが、日付で並べ替えられた 2 つの JSON を単純に結合するより良い/簡単な方法はありますか? 2 番目は、最初の 1 つが中断したところから開始されましたか?

json = File.read("file_a.json")
quotes = JSON.parse(json)
$close = quotes.collect {|quote| quote['Adj Close']}

第二に、1 つの 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 に答える