【发布时间】:2021-10-15 20:35:52
【问题描述】:
我试图像这样创建一个空的 json 变量;
var myJSON = {
measurements: {} };
以下,我尝试将数据推送到 json 并将该 json 写入 chart.json 文件,但出现错误:
TypeError [ERR_INVALID_ARG_TYPE]:“data”参数必须是字符串类型或 Buffer、TypedArray 或 DataView 的实例。收到一个 Object 的实例
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);
}
});
如果我创建像 var myJSON = {} 这样的 json 变量,则没有问题。为什么会这样?感谢帮助^-^
编辑:
这是我的 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; 并将整个对象字符串化。
【问题讨论】:
-
可以分享
myJSON的值吗 -
你为什么使用:`myJSON.measurements = JSON.stringify(measurements);`而不是对整个对象进行字符串化?我认为您需要执行以下操作:
const myJSONText= JSON.stringify(myJSON);并将myJSONText写入您的文件 -
我会尝试像
myJSON.measurements[i] = results[i];一样填充它而不使用 stringify
标签: javascript node.js json