Вы можете использовать JSON.parse()
.
Вы можете использовать объект JSON
на любом ECMAScript 5 совместимомРеализация JavaScript.И V8 , на котором построен Node.js, является одним из них.
Примечание. Если вы используете файл JSON для хранения конфиденциальной информации (например, паролей), этонеправильный способ сделать это.Посмотрите, как это делает Heroku: https://devcenter.heroku.com/articles/config-vars#setting-up-config-vars-for-a-deployed-application. Узнайте, как это делает ваша платформа, и используйте process.env
для получения конфигурационных переменных из кода.
Анализ строкисодержащий данные JSON
var str = '{ "name": "John Doe", "age": 42 }';
var obj = JSON.parse(str);
Анализ файла, содержащего данные JSON
Вам потребуется выполнить некоторые файловые операции с модулем fs
.
Асинхронная версия
var fs = require('fs');
fs.readFile('/path/to/file.json', 'utf8', function (err, data) {
if (err) throw err; // we'll not consider error handling for now
var obj = JSON.parse(data);
});
Синхронная версия
var fs = require('fs');
var json = JSON.parse(fs.readFileSync('/path/to/file.json', 'utf8'));
Хотите использовать require
?Подумайте еще раз!
Иногда вы можете использовать require
:
var obj = require('path/to/file.json');
Но я не рекомендую это по нескольким причинам:
require
синхронно.Если у вас очень большой JSON-файл, он закроет ваш цикл обработки событий.Вам действительно нужно использовать JSON.parse
с fs.readFile
. require
будет считывать файл только один раз .Последующие вызовы require
для того же файла вернут кэшированную копию.Не очень хорошая идея, если вы хотите прочитать файл .json
, который постоянно обновляется.Вы можете использовать взломать .Но на этом этапе проще просто использовать fs
. - Если ваш файл не имеет расширения
.json
, require
не будет обрабатывать содержимое файла как JSON.
Серьезно!Используйте JSON.parse
.
load-json-file
module
Если вы читаете большое количество файлов .json
(и если вы очень ленивы), он становитсяраздражает писать шаблонный код каждый раз.Вы можете сохранить некоторые символы, используя модуль load-json-file
.
const loadJsonFile = require('load-json-file');
Асинхронная версия
loadJsonFile('/path/to/file.json').then(json => {
// `json` contains the parsed object
});
Синхронная версия
let obj = loadJsonFile.sync('/path/to/file.json');
Разбор JSON из потоков
Если содержимое JSON передается по сети, вам необходимо использовать анализатор потоков JSON.В противном случае он свяжет ваш процессор и закроет цикл обработки событий, пока содержимое JSON не будет полностью передано в потоковом режиме.
Для NPM доступно множество пакетов .Выберите, что лучше для вас.
Обработка ошибок / Безопасность
Если вы не уверены, что все, что передано в JSON.parse()
, является допустимым JSON , убедитесь, чтозаключить звонок в JSON.parse()
внутри блока try/catch
.Предоставленная пользователем строка JSON может привести к сбою приложения и даже к дырам в безопасности.Убедитесь, что обработка ошибок выполнена, если вы анализируете предоставленный извне JSON.