與另一JSON加盟我有這樣一個JSON:哈希JSON然後在Ruby中
[
{
"Low": 8.63,
"Volume": 14211900,
"Date": "2012-10-26",
"High": 8.79,
"Close": 8.65,
"Adj Close": 8.65,
"Open": 8.7
},
{
"Low": 8.65,
"Volume": 12167500,
"Date": "2012-10-25",
"High": 8.81,
"Close": 8.73,
"Adj Close": 8.73,
"Open": 8.76
},
{
"Low": 8.68,
"Volume": 20239700,
"Date": "2012-10-24",
"High": 8.92,
"Close": 8.7,
"Adj Close": 8.7,
"Open": 8.85
}
]
而且已經計算出一個簡單的移動平均收盤價中的每一天,並把它稱爲一個變量。我想與原來的JSON加入移動平均值,所以我得到這樣的每一天:
{
"Low": 8.68,
"Volume": 20239700,
"Date": "2012-10-24",
"High": 8.92,
"Close": 8.7,
"Adj Close": 8.7,
"Open": 8.85,
"SMA9": 8.92
}
有了我這樣做的sma9day變量:
h = { "SMA9" => sma9day }
sma9json = h.to_json
puts sma9json
其輸出該:
{"SMA9":[8.92,8.93,8.93]}
我該如何把它與JSON兼容的格式並加入兩個?我需要從上到下進行「匹配/連接」,因爲JSON中的最後8條記錄不會有9天移動平均值(在這些情況下,我仍然喜歡關鍵位置(SMA9),但具有零或零值
謝謝
最新升級。
我現在有這一點,這讓我非常接近,但它返回整個字符串中的SMA9領域的JSON ...
require json
require simple_statistics
json = File.read("test.json")
quotes = JSON.parse(json)
# Calculations
def sma9day(quotes, i)
close = quotes.collect {|quote| quote['Close']}
sma9day = close.each_cons(9).collect {|close| close.mean}
end
quotes = quotes.each_with_index do |day, i|
day['SMA9'] = sma9day(quotes, i)
end
p quotes[0]
=> {"Low"=>8.63, "Volume"=>14211900, "Date"=>"2012-10-26", "High"=>8.79, "Close"=>8.65, "Adj Close"=>8.65, "Open"=>8.7, "SMA9"=>[8.922222222222222, 8.93888888888889, 8.934444444444445, 8.94222222222222, 8.934444444444445, 8.937777777777777, 8.95, 8.936666666666667, 8.924444444444443, 8.906666666666666, 8.912222222222221, 8.936666666666666, 8.946666666666665, 8.977777777777778, 8.95111111111111, 8.92, 8.916666666666666]}
當我嘗試在計算結束前做sma9day.round(2) ,它給出了一個方法錯誤(可能是因爲數組?),並且當我做了sma9day [0] .round(2)時,它確實輪了,但每條記錄當然都有相同的SMA。
任何幫助表示讚賞。謝謝
Thats javascript ... – AJcodez