Разбор через JSON-файл с помощью JAVA-SCRIPT - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть файл json, который выглядит примерно так.Мне нужно написать код JS, который будет анализировать этот файл и считывать определенные элементы файла, такие как sensor_state первого элемента, и записывать в конкретный элемент, например, изменить параметр sensor_state для "sensor_id": "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]);

            }
            )

1 Ответ

0 голосов
/ 13 февраля 2019
  • Чтобы обработать 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');
  });
});

Примечание

У меня было несколько мыслей о том, как это сделать.пытаясь рассматривать его как массив

Это массив , поэтому имеет смысл рассматривать его как единое целое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...