首页 > 解决方案 > 解析 JSON 并创建可读数组

问题描述

这里的目标是将来自 API(无法控制)的 JSON 解析到我自己制作的数组中。我有两个问题:

  1. 我不确定如何在“元数据”下获取 #2 值。

  2. 如果我想获取第一个名为“时间序列(5 分钟):”的数组并将其放入自己的数组中,我只是不确定。会不会像

var bodyParsed = JSON.parse(data);
let bodyArray = bodyParsed['Time Series (5min:']
for (var i = 0; i < bodyArray.length; i++) {

  firstArray.push([
    bodyArray[i][0], //"1. open": "125.4800",
    bodyArray[i][1], //"2. high": "125.4800",
  ])

}

JSON 示例

var data = [
{
"Meta Data": {
    "1. Symbol": "XXX",
    "2. Last Refreshed": "2020-07-17 19:25:00",
    "3. Interval": "5min",
},
"Time Series (5min)": {
    "2020-07-17 19:25:00": {
        "1. open": "125.4800",
        "2. high": "125.4800",
        "3. low": "125.4800",
        "4. close": "125.4800",
        "5. volume": "100"
    },
    "2020-07-17 19:05:00": {
        "1. open": "125.2400",
        "2. high": "125.2400",
        "3. low": "125.2400",
        "4. close": "125.2400",
        "5. volume": "200"
    },
    "2020-07-17 19:00:00": {
        "1. open": "125.4000",
        "2. high": "125.4000",
        "3. low": "125.2400",
        "4. close": "125.2400",
        "5. volume": "1048"
    },
    "2020-07-17 18:40:00": {
        "1. open": "125.3000",
        "2. high": "125.3000",
        "3. low": "125.3000",
        "4. close": "125.3000",
        "5. volume": "248"
    },
    "2020-07-17 18:35:00": {
        "1. open": "125.3500",
        "2. high": "125.3500",
        "3. low": "125.3000",
        "4. close": "125.3000",
        "5. volume": "399"
    }
}
]

标签: javascriptnode.jsarraysjson

解决方案


这是我运行的代码,似乎可以解决您的问题(完整):

var data = `[{
    "Meta Data": {
    "1. Symbol": "XXX",
    "2. Last Refreshed": "2020-07-17 19:25:00",
    "3. Interval": "5min"
    },
    "Time Series (5min)": {
        "2020-07-17 19:25:00": {
        "1. open": "125.4800",
        "2. high": "125.4800",
        "3. low": "125.4800",
        "4. close": "125.4800",
        "5. volume": "100"
        },
        "2020-07-17 19:05:00": {
            "1. open": "125.2400",
            "2. high": "125.2400",
            "3. low": "125.2400",
            "4. close": "125.2400",
            "5. volume": "200"
        },
        "2020-07-17 19:00:00": {
            "1. open": "125.4000",
            "2. high": "125.4000",
            "3. low": "125.2400",
            "4. close": "125.2400",
            "5. volume": "1048"
        },
        "2020-07-17 18:40:00": {
            "1. open": "125.3000",
            "2. high": "125.3000",
            "3. low": "125.3000",
            "4. close": "125.3000",
            "5. volume": "248"
        },
        "2020-07-17 18:35:00": {
            "1. open": "125.3500",
            "2. high": "125.3500",
            "3. low": "125.3000",
            "4. close": "125.3000",
            "5. volume": "399"
        }
    }
}]`;

var bodyParsed = JSON.parse(data);
let bodyArray = []

// Meta Data #2
let metaData = bodyParsed[0]["Meta Data"];
let num2 = metaData["2. Last Refreshed"];
bodyArray.push(num2);

// Time series.
let timeSeries = bodyParsed[0]["Time Series (5min)"][num2];
bodyArray.push(
    timeSeries["1. open"],
    timeSeries["2. high"],
    timeSeries["3. low"],
    timeSeries["4. close"],
    timeSeries["5. volume"]
);

console.log(bodyArray);

推荐阅读