record/store 数值数据以何种格式进一步 JavaScript 处理?
In which format to record/store numerical data for further JavaScript processing?
我计划在几个月内(每天)收集一些数据,以便在 JavaScipt 中进一步处理和表示(可能使用任何 js 库,例如 d3.js 等。我不知道哪个一个)。数据将包括:
- 日期
- 一个整数
- 一位小数
您会推荐哪种 file/data 格式来记录数据以供后续使用 JavaScript 工作?
我认为 CSV 在这里更合适,因为它听起来像是一长串数据点。
JSON 会 工作,就像 XML 或任何其他系统会工作一样,但尽管我喜欢 JSON,它不一定是 well-suited 的工作:
JSON 将是 space-inefficient。它需要很多标点符号。
JSON 将是 memory-inefficient。要向 JSON 文件添加任何内容,您需要:
- 将整个文件作为一个长字符串读取
- 将该长字符串解析为 JSON,将其作为大哈希或数组保存在内存中
- 插入您的新数据
- Re-encode 大哈希或数组作为一个长字符串
- 用新的长字符串覆盖旧文件
- JSON 将更难阅读...除非它以 "pretty" 格式存储,在这种情况下它会更 space-inefficient.
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 没有 built-in CSV 解析器 JSON.parse
... 因为解析 CSV 真的很容易!这只是众多方法中的一种:
var splitByLine = myCSVString.split("\n");
var splitByLineAndComma = [];
splitByLine.forEach(function(line){
splitByLineAndComma.push(line.split(","));
});
我会默认使用 JSON,它不仅轻量级,而且 JavaScript 还内置了 easy-to-use JSON 解析器:JSON.parse
.
JSON 是 name/value 对的集合,听起来非常适合您建议的用例:
[
{
"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
我计划在几个月内(每天)收集一些数据,以便在 JavaScipt 中进一步处理和表示(可能使用任何 js 库,例如 d3.js 等。我不知道哪个一个)。数据将包括:
- 日期
- 一个整数
- 一位小数
您会推荐哪种 file/data 格式来记录数据以供后续使用 JavaScript 工作?
我认为 CSV 在这里更合适,因为它听起来像是一长串数据点。
JSON 会 工作,就像 XML 或任何其他系统会工作一样,但尽管我喜欢 JSON,它不一定是 well-suited 的工作:
JSON 将是 space-inefficient。它需要很多标点符号。
JSON 将是 memory-inefficient。要向 JSON 文件添加任何内容,您需要:
- 将整个文件作为一个长字符串读取
- 将该长字符串解析为 JSON,将其作为大哈希或数组保存在内存中
- 插入您的新数据
- Re-encode 大哈希或数组作为一个长字符串
- 用新的长字符串覆盖旧文件
- JSON 将更难阅读...除非它以 "pretty" 格式存储,在这种情况下它会更 space-inefficient.
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 没有 built-in CSV 解析器 JSON.parse
... 因为解析 CSV 真的很容易!这只是众多方法中的一种:
var splitByLine = myCSVString.split("\n");
var splitByLineAndComma = [];
splitByLine.forEach(function(line){
splitByLineAndComma.push(line.split(","));
});
我会默认使用 JSON,它不仅轻量级,而且 JavaScript 还内置了 easy-to-use JSON 解析器:JSON.parse
.
JSON 是 name/value 对的集合,听起来非常适合您建议的用例:
[
{
"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