2014-09-11 59 views
-2

我有以下的JSON數組:的Javascript:扁平化的嵌套JSON陣列,同時保持一個鍵值

[{ 
    "eurusd": { 
     "at": 1410438338, 
     "ticker": { 
      "buy": "1.123", 
      "sell": "1.123", 
      "low": "1.123", 
      "high": "1.123", 
      "last": "1.123", 
      "vol": "1.123", 
      "change": "1.123", 
      "change_trend": "up" 
     } 
    }, 
    "eurgbp": { 
     "at": 1410438338, 
     "ticker": { 
      "buy": "1.123", 
      "sell": "1.123", 
      "low": "1.123", 
      "high": "1.123", 
      "last": "1.123", 
      "vol": "1.123", 
      "change": "1.123", 
      "change_trend": "down" 
     } 
    } 
}] 

,需要把它的格式如下:

[{ 
    "market": "eurusd", 
    "currency": "usd", 
    "volume": "1.123", 
    "change": "1.123", 
    "last": "1.123", 
    "high": "1.123", 
    "low": "1.123" 
}, { 
    "market": "eurgbp", 
    "currency": "gbp", 
    "volume": "1.123", 
    "change": "1.123", 
    "last": "1.123", 
    "high": "1.123", 
    "low": "1.123" 
}] 

我所知道的但有一件重要的事情我不能做:

1)貨幣不是原始數組的一部分。我將需要將其從關鍵名稱

到目前爲止我能夠完全壓平原始數組,但我沒有運氣可以省略某些值(例如買入/賣出)以及添加「貨幣」值添加到新陣列。

+0

你從哪裏得到2.009的容積歐元兌美元?它是如何計算的?您需要展示迄今爲止所做的工作,特別是在您需要使用的算法方面。 – Andy 2014-09-11 12:42:29

+0

Andy,這些數字是隨機的 – domi771 2014-09-11 12:44:22

+0

您應該更改您的問題,以便JSON之前/之後的值匹配,否則您會讓所有人都與我一樣困惑。 – Andy 2014-09-11 12:45:42

回答

0

看起來你並不那麼想要將這個對象扁平化,只需提取ticker值並將市場信息添加到單個項目。對於這一點,我認爲你需要一個特設的做法是:

var items = [], 
    cur, 
    ticker, 
    item; 
for (var cur in data[0]) { 
    ticker = data[0][cur].ticker; 
    item = {}; 
    ["change", "last", "high", "low"].forEach(function (key) { 
     item[key] = ticker[key]; 
    }); 
    item.volume = ticker.vol; 
    item.market = cur; 
    item.currency = cur.substring(3); 
    items.push(item); 
} 

Working jsfiddle

+0

我努力用你的建議,但目前爲止沒有運氣......沒有得到任何錯誤消息,只是在console.log沒有輸出。我用「市場」爲var和markets.push(項目)最終改變了「items」 – domi771 2014-09-11 13:25:43

+0

您是否在console.log(markets)中嵌入了'$ .getJSON'回調?由於'getJSON'是異步的,在回調發生之前'markets'不會被填充。 – JLRishe 2014-09-11 13:30:53

+0

你在用什麼語言?它似乎不是JavaScript。你可以把它放入PasteBin或其他東西?在評論框中很難看到這裏。 – JLRishe 2014-09-11 13:52:46

相關問題