我有一个看起来像这样的 json 文件。我需要编写一个 JS 代码来解析该文件并读取文件的特定元素,例如第一个元素的sensor_state,并写入特定元素,例如将“sensor_id”的sensor_state:“302CEM/lion/light1”更改为on 。 这就是我尝试过的。我对如何去做有一些想法。 尝试将其视为数组,sensor_state[0] 将表示第一组,sensor_state[1] 将表示第二组,依此类推。 另一种方法是在每个组/对象之前有一个名称,即 light_1 ,以便具有表示sensor_data[light1][sensor_state] =“off”的代码,但我无法构造 json 文件来执行任一操作。 有什么建议
{
"sensor_data": [
{
"sensor_id": "302CEM/lion/light1",
"sensor_state": "off"
},
{
"sensor_id": "302CEM/lion/light2",
"sensor_state": "off"
}
]
}
const fs =
require('fs');
var data = []
//To Read from the JSON File, dont know if this still needed
fs.readFile('datajson.json', (err,data) => {
if (err) throw err;
var sensor = JSON.parse(data);
var stringy = JSON.stringify(data)
console.log(stringy.sensor_state[0]);
}
)
最佳答案
- 为了处理 JSON,在
JSON.parse
之后执行要容易得多,而不是使用JSON.stringify 的字符串
返回。 - 并在处理后写入您的文件。首先使用 JSON.stringify 将对象转换为字符串。然后调用fs.writeFile实际编写内容
您的代码将如下所示
const fs = require('fs');
const fileName = './data.json';
fs.readFile(fileName, (errRead, content) => {
if (ererrReadr) throw errRead;
let data = JSON.parse(content);
// Change the "sensor_id" of the first item in "sensor_data"
data.sensor_data[0].sensor_id = 'this is a new ID';
// Write back new JSON
fs.writeFile(fileName, JSON.stringify(data), errWrite => {
if (errWrite) throw errWrite;
console.log('New data has been saved');
});
});
注意
I had a few thoughts on how to to go about it. trying to treat it like an array
它是一个数组,因此只有将其视为一个数组才有意义。
关于javascript - 使用 JAVA-SCRIPT 解析 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54659418/