json - 如何从复杂的 Javascript 对象中提取数据?
问题描述
假设,我有一个简单的以下 Javascript 代码片段。
let data = {
"ethusd": {
"at": 1581416882,
"ticker": {
"buy": "218.87",
"sell": "219.0",
"low": "0.0",
"high": "0.0",
"open": 209.09,
"last": "0.0",
"volume": "72877.8789",
"avg_price": "213.699103431748658920247612509",
"price_change_percent": "-100.00%",
"vol": "72877.8789"
}
},
"trstusd": {
"at": 1581416882,
"ticker": {
"buy": "0.0",
"sell": "0.0",
"low": "0.0",
"high": "0.0",
"open": "0.0",
"last": "0.0",
"volume": "0.0",
"avg_price": "0.0",
"price_change_percent": "+0.00%",
"vol": "0.0"
}
},
"trsteth": {
"at": 1581416882,
"ticker": {
"buy": "0.0",
"sell": "0.0",
"low": "0.0",
"high": "0.0",
"open": "0.0",
"last": "0.0",
"volume": "0.0",
"avg_price": "0.0",
"price_change_percent": "+0.00%",
"vol": "0.0"
}
}
}
for (let element in data)
{
let innerElement = data[element];
for (let innerData in innerElement)
{
if (innerData !== "at")
{
let internalData = innerElement[innerData];
for (let x in internalData)
{
console.log(x,internalData[x]);
}
}
}
}
我在上面的代码上尝试的是获得特别是买入和卖出的价值。所以我就这样写了一段代码。这是从 javascript 对象或 JSON 数据格式中提取数据的好方法吗?如果没有,有哪些有效的方法和良好做法?
解决方案
这取决于你想做什么。
例如,如果您必须获取每个交易所的所有代码:
for(let exchange in data) {
var ticker = data[exchange]["ticker"];
console.log(ticker);
// maybe here you can creare row of a table? (example)
}
or..
for(let exchange in data) {
var ticker = data[exchange].ticker;
console.log(ticker);
// maybe here you can creare row of a table? (example)
}
如果您想访问特定交易所的代码:
var ticker = data["ethusd"]["ticker"];
or..
var ticker = data.ethusd["ticker"];
or..
var ticker = data.ethusd.ticker;
显然,您必须检查该字段是否存在:
var exist = typeof data.ethusd !== 'undefined' && data.ethusd !== null;
or..
var exist = typeof data["ethusd"] !== 'undefined' && data["ethusd"] !== null;
or..
var exist = (!!data.ethusd);
or..
var exist = (!!data["ethusd"]);
这是一个简单的 Javascript 对象,您可以通过对象字段或通过字段名称作为字典的“键”来访问它。