如何使用 Node.js 解析 JSON?

我应该如何使用 Node.js 解析 JSON?是否有一些模块可以安全地验证和解析 JSON?

答案

您可以简单地使用JSON.parse

JSON对象的定义是 ECMAScript 5 规范的一部分 。 node.js 基于 Google Chrome 的V8引擎构建,该引擎遵循 ECMA 标准。因此,node.js 也具有全局对象JSON [docs]

注意JSON.parse可以占用当前线程,因为它是一种同步方法。因此,如果您打算解析大型 JSON 对象,请使用流式 JSON 解析器。

var parsedJSON = require('./file-name');
var config = require('./config.json');
var config = require('./config');
var str = '{ "name": "John Doe", "age": 42 }';
var obj = JSON.parse(str);
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'));
var obj = require('path/to/file.json');
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.parse(str);
var fs = require('fs');
var file = __dirname + '/config.json';

fs.readFile(file, 'utf8', function (err, data) {
  if (err) {
    console.log('Error: ' + err);
    return;
  }

  data = JSON.parse(data);

  console.dir(data);
});

我想提一下,全局 JSON 对象还有其他选择。 JSON.parseJSON.stringify都是同步的,因此,如果要处理大对象,则可能需要检出一些异步 JSON 模块。

看看: https : //github.com/joyent/node/wiki/Modules#wiki-parsers-json

var fs = require("fs");
var file = JSON.parse(fs.readFileSync("./PATH/data.json", "utf8"));
function tryParseJson(str) {
    try {
        return JSON.parse(str);
    } catch (ex) {
        return null;
    }
}
function tryParseJson(str, callback) {
    process.nextTick(function () {
      try {
          callback(null, JSON.parse(str));
      } catch (ex) {
          callback(ex)
      }
    })
}
var request = require('request')
  , JSONStream = require('JSONStream')

request({url: 'http://isaacs.couchone.com/registry/_all_docs'})
    .pipe(JSONStream.parse('rows.*'))
    .pipe(es.mapSync(function (data) {
      return data
    }))
JSON.parse("your string");