转换JSON

时间:2016-01-19 08:36:22

标签: json node.js

我正在尝试将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年1月15日",292.5,294.4,267.1,279.9,273,64104,182.09]]"&高#34;:"""低":""},{"日期":[[" 2016- 01-14",288,302,265,287.6,288.2,68271,199.82]]"高":"""低":"&# 34;},{"日期":[[" 2016年1月13日",303.95,307.65,275,290.1,292.75,99921,293.08]]"高&#34 ;:"""低":""}]

1 个答案:

答案 0 :(得分:1)

您应该使用内置的 Array 函数来转换数据。例如映射,缩小,过滤,排序等。在这种情况下, map 将完美地完成工作。 e.g。

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"},...]