【问题标题】:Transforming JSON转换 JSON
【发布时间】:2016-01-19 08:36:21
【问题描述】:

我正在尝试将 Quandl 提供的 JSON 数据转换为自定义 JSON 格式,以便将其加载到我的数据库中。

JSON 数组是包含日期、最高价、最低价、开盘价、收盘价的股票市场数据。我需要一个平面 JSON 而不是数组。

我尝试了以下方法,但它返回完整数组而不是单个元素。如果我使用 [0][1]、[0][2],它会返回空值。

这是我的code

var DataTransform = require("node-json-transform").DataTransform

var myData = {"dataset":{"data":[["2016-01-15",292.5,294.4,267.1,279.9,273.0,64104.0,182.09],["2016-01-14",288.0,302.0,265.0,287.6,288.2,68271.0,199.82],["2016-01-13",303.95,307.65,275.0,290.1,292.75,99921.0,293.08]]}}

var map = {
    list : 'dataset.data',
    item: {
        date: [0],
        high: [0][1],
        low: [0][0][1]
    }
};

var dataTransform = DataTransform(myData, map);
var result = dataTransform.transform();
console.log(result);

================================================ ========================

输出

[{"日期":[["2016-01-15",292.5,294.4,267.1,279.9,273,64104,182.09]],"high":"","low":""}, {"date":[["2016-01-14",288,302,265,287.6,288.2,68271,199.82]],"high":"","low":""},{"date":[["2016- 01-13",303.95,307.65,275,290.1,292.75,99921,293.08]],"high":"","low":""}]

【问题讨论】:

  • 好的,理想情况下你会拥有什么?
  • 我想要这样的东西:[{date:"2016-01-15",high:"294.4",low:"267.1"},...]

标签: json node.js


【解决方案1】:

您应该使用内置的 Array 函数来转换数据。例如map、reduce、filter、sort 等。在这种情况下 map 将完美地完成这项工作。例如

var ds = {"dataset":{"data":[["2016-01-15",292.5,294.4,267.1,279.9,273.0,64104.0,182.09],["2016-01-14",288.0,302.0,265.0,287.6,288.2,68271.0,199.82],["2016-01-13",303.95,307.65,275.0,290.1,292.75,99921.0,293.08]]}}

var transformed = ds.dataset.data
    .map(function (d) {
        return {
            date : d[0],
            high : d[1],
            low : d[2],
            etc:
        }
    })

// output in format : [{date:"2016-01-15",high:"294.4",low:"267.1"},...]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-05
    • 2021-01-30
    • 2012-10-15
    • 2021-04-29
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多