javascript - 使用 JAVA-SCRIPT 解析 JSON 文件

标签 javascript node.js json home-automation

我有一个看起来像这样的 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/

相关文章:

Node.js 电子邮件存在检查

javascript - Google Analytics 脚本未在 IE 中触发。页面上没有其他元素可以破坏脚本

javascript - 固定标题位置错误

javascript - getBoundingClientRect().width 没有返回正确的宽度

javascript - 使用 Node.js 驱动程序生成动态 mongodb 查询

javascript - 在 nest.js 中,是否可以在参数装饰器中获取服务实例?

Java flexjson 序列化组成的 JSON 对象

java - twitter4j 4.0.2 getRawJSON() 返回 null

javascript - 从 URL 中获取变量时遇到问题

json - 无法从 HTTP 响应中解析 JSON