Как разобрать JSON с помощью Node.js? - PullRequest
919 голосов
/ 20 апреля 2011

Как мне проанализировать JSON с помощью Node.js?Есть ли какой-нибудь модуль, который будет проверять и анализировать JSON безопасно?

Ответы [ 31 ]

1 голос
/ 10 октября 2016

Если вы хотите добавить несколько комментариев в свой JSON и разрешить использовать запятые, вы можете использовать следующую реализацию:

var fs = require('fs');

var data = parseJsData('./message.json');

console.log('[INFO] data:', data);

function parseJsData(filename) {
    var json = fs.readFileSync(filename, 'utf8')
        .replace(/\s*\/\/.+/g, '')
        .replace(/,(\s*\})/g, '}')
    ;
    return JSON.parse(json);
}

Обратите внимание, что это может не сработать, если в вашем JSON есть что-то вроде "abc": "foo // bar". Так что YMMV.

1 голос
/ 24 сентября 2018

Если исходный файл JSON довольно большой, возможно, потребуется рассмотреть асинхронный маршрут с помощью собственного подхода async / await с Node.js 8.0 следующим образом

const fs = require('fs')

const fsReadFile = (fileName) => {
    fileName = `${__dirname}/${fileName}`
    return new Promise((resolve, reject) => {
        fs.readFile(fileName, 'utf8', (error, data) => {
            if (!error && data) {
                resolve(data)
            } else {
                reject(error);
            }
        });
    })
}

async function parseJSON(fileName) {
    try {
        return JSON.parse(await fsReadFile(fileName));
    } catch (err) {
        return { Error: `Something has gone wrong: ${err}` };
    }
}

parseJSON('veryBigFile.json')
    .then(res => console.log(res))
    .catch(err => console.log(err))
0 голосов
/ 30 марта 2019

Как уже упоминалось в ответах выше, мы можем использовать JSON.parse() для анализа строк в JSON Но перед синтаксическим анализом обязательно проанализируйте правильные данные, иначе это может привести к падению всего приложения

это безопасно использовать вот так

let parsedObj = {}
try {
    parsedObj = JSON.parse(data);
} catch(e) {
    console.log("Cannot parse because data is not is proper json format")
}
0 голосов
/ 31 января 2019

NodeJs - это сервер, основанный на JavaScript , так что вы можете делать то же, что и вы, в чистом JavaScript ...

Представьте себеу вас есть это Json в NodeJs ...

var details = '{ "name": "Alireza Dezfoolian", "netWorth": "$0" }';
var obj = JSON.parse(details);

И вы можете сделать выше, чтобы получить разобранную версию вашего JSON ...

0 голосов
/ 13 июня 2018

Никаких дополнительных модулей не требуется.
Просто используйте
var parsedObj = JSON.parse(yourObj);
Я не думаю, что есть какие-либо проблемы безопасности, связанные с этим

0 голосов
/ 01 мая 2018

Используйте JSON.parse(str);.Подробнее здесь .

Вот несколько примеров:

var jsonStr = '{"result":true, "count":42}';

obj = JSON.parse(jsonStr);

console.log(obj.count);    //expected output: 42
console.log(obj.result);   // expected output: true
0 голосов
/ 14 апреля 2018

Используйте это, чтобы быть на безопасной стороне

var data = JSON.parse(Buffer.concat(arr).toString());
0 голосов
/ 08 апреля 2018

Вы можете использовать JSON.parse () (это встроенная функция, которая, вероятно, заставит вас обернуть ее с помощью операторов try-catch).

Или использовать некоторую библиотеку JSON для разбора npm, что-то вроде JSON-синтаксический анализ или

0 голосов
/ 10 июня 2014

Это просто, вы можете конвертировать JSON в строку, используя JSON.stringify(json_obj), и конвертировать строку в JSON, используя JSON.parse("your json string").

0 голосов
/ 06 декабря 2015
var fs = require('fs');

fs.readFile('ashish.json',{encoding:'utf8'},function(data,err) {

   if(err) 
      throw err;

   else {

   console.log(data.toString());

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