1

我计划在几个月内(每天)收集一些数据,以便在 JavaScipt 中进一步处理和表示(可能使用任何 js 库,例如 d3.js 等。我还不知道是哪一个)。数据将包括:

  • 日期
  • 一个整数
  • 一位十进制数

您会推荐哪种文件/数据格式来记录数据以供后续使用 JavaScript 工作?

4

2 回答 2

2

我认为 CSV 在这里更合适,因为听起来它只是一个很长的数据点列表。

JSON可以工作,就像 XML 或任何其他系统可以工作一样,但尽管我很喜欢 JSON,但它不一定非常适合这项工作:

  • JSON 将是空间效率低下的。它需要大量的标点符号。

  • JSON 将是内存效率低下的。要将任何内容添加到 JSON 文件,您需要:

    1. 将整个文件作为一个长字符串读取
    2. 将该长字符串解析为 JSON,将其作为大哈希或数组保存在内存中
    3. 插入新数据
    4. 将大哈希或数组重新编码为一个长字符串
    5. 用那个新的长字符串覆盖你的旧文件
  • JSON 将更难阅读……除非它以“漂亮”的格式存储,在这种情况下,它将更加节省空间。

CSV 需要的多余标点符号要少得多,您可以在文件末尾附加一行新数据,而无需读取和写入整个内容。

考虑:

JSON(不漂亮):

{"01012016":[42,0.8675309],"01022016":[12,9.87654321]}

JSON(漂亮):

{
  "01012016":[
    42,
    0.8675309
  ],
  "01022016":[
    12,
    9.87654321
  ]
}

CSV:

01012016,42,0.8675309
01022016,12,9.87654321

Javascript 没有内置的 CSV 解析器JSON.parse……因为解析 CSV 真的很容易!这只是众多方法中的一种:

var splitByLine = myCSVString.split("\n");
var splitByLineAndComma = [];
splitByLine.forEach(function(line){
  splitByLineAndComma.push(line.split(","));
});
于 2016-01-02T14:22:45.953 回答
0

我会默认使用 JSON,它不仅是轻量级的,而且 JavaScript 也有一个内置的、易于使用的 JSON 解析器:JSON.parse.

JSON 是名称/值对的集合,这听起来非常适合您建议的用例:

[
    {
        "my-date": 1451744353495,
        "my-int": 42,
        "my-decimal": 3.1415926535
    },
    {
        "my-date": 1451744353496,
        "my-int": 43,
        "my-decimal": 2.7182818284
    },
    {
        "my-date": 1451744353497,
        "my-int": 44,
        "my-decimal": 1.4142135623
    }
]

如果您将 JSON 作为字符串,只需将其弹出到JSON.parse中,您就可以开始使用闪亮的新 JavaScript 对象了:

var obj = JSON.parse(str);
obj[0]["my-int"] === 42; // true
于 2016-01-02T14:24:13.987 回答