javascript - 如何命名 JSON 对象并将其写入 .json 文件?
问题描述
我试图像这样创建一个空的 json 变量;
var myJSON = {
measurements: {} };
在下面,我尝试将数据推送到 json 并将该 json 写入 chart.json 文件但发生错误:
TypeError [ERR_INVALID_ARG_TYPE]:“数据”参数必须是字符串类型或 Buffer、TypedArray 或 DataView 的实例。收到一个对象实例
connection.query('SELECT Temprature,Humidity, Time from miTemp1', function (error, results, fields) {
if (error) throw error;
let i = 0, j = 0;
console.log(typeof (results))
while (i < results.length) {
let myDate = new Date(results[i].Time * 1000);
// console.log('Temp: ' + results[i].Temprature, 'Humidty:' + results[i].Humidity, 'Time: ' + myDate.toLocaleString());
measurements[i] = results[i];
i += 510;
j++;
}
myJSON.measurements = JSON.stringify(measurements);
console.log(typeof(myJSON));
console.log(myJSON);
console.log(new Date().toLocaleString() + ' Number of measurement: ' + j);
try {
fs.writeFileSync('./chart.json', myJSON);
console.log("JSON data is saved.");
} catch (error) {
console.error(error);
}
});
如果我像创建 json 变量一样var myJSON = {}
没有问题。为什么会这样?感谢帮助^-^
编辑:
这是我的 JSON 数据。
{
"0": {
"Temprature": 25.88,
"Humidity": 43,
"Time": 1628164626
},
"510": {
"Temprature": 26.22,
"Humidity": 45,
"Time": 1628169522
},
解决方案:我需要做的就是改变myJSON.measurements = JSON.stringify(measurements);
整个myJSON.measurements = measurements;
对象并将其字符串化。
解决方案
您不能只将对象写入文件。您需要先使用以下命令对其进行序列化JSON.stringify()
:
fs.writeFileSync('./chart.json', JSON.stringify(myJSON));
您也不需要序列化measurements
属性,因为您序列化了整个对象。你可以替换这个:
myJSON.measurements = JSON.stringify(measurements);
有了这个:
myJSON.measurements = measurements;
推荐阅读
- kubernetes - 使用 Helm 设置 Kubernetes 命名空间和角色
- python - 更改 timedelta 格式以仅显示分钟和秒
- python - Google Foobar- Code 在我的 IDE 中工作,但在 foobar 中不工作。静态方法?
- javascript - 如何访问内部嵌套对象内的主要对象的属性?
- nlp - 如何在词嵌入中插入信息?
- python - sqlite3.InterfaceError:错误绑定参数 0 - 可能是不支持的类型?
- python - 在python中将字符串与文本文件进行比较
- html - 如何使文本从表格单元格的底部开始?
- python - 层次嵌套字典创建新功能
- r - 根据最近的日期更新非缺失值