如何使用Node.js解析JSON?

JavaScript

神奇Davaid

2020-03-13

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

第1505篇《如何使用Node.js解析JSON?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

14个回答
泡芙Green 2020.03.13

很简单,您可以使用将JSON转换为字符串JSON.stringify(json_obj),并使用将字符串转换为JSON JSON.parse("your json string")

飞云神奇 2020.03.13

无需其他模块。
只是使用
var parsedObj = JSON.parse(yourObj);
我不认为与此有关的任何安全问题

小宇宙樱 2020.03.13

如以上答案中所述,我们可以JSON.parse()将字符串解析为JSON,但是在解析之前,请务必解析正确的数据,否则可能会导致整个应用程序崩溃

这样可以安全使用

let parsedObj = {}
try {
    parsedObj = JSON.parse(data);
} catch(e) {
    console.log("Cannot parse because data is not is proper json format")
}
小卤蛋梅 2020.03.13

为了安全起见,请使用它

var data = JSON.parse(Buffer.concat(arr).toString());
TomTony 2020.03.13

您可以使用JSON.parse()(这是一个内置函数,可能会迫使您使用try-catch语句包装它)。

或使用JSON解析npm库,例如json-parse-or

小哥Jim 2020.03.13

始终确保在try catch块中使用JSON.parse,因为如果json中有一些损坏的数据,则节点总是会引发意外错误,因此请使用此代码代替简单的JSON.Parse

try{
     JSON.parse(data)
}
catch(e){
   throw new Error("data is corrupted")
  }
老丝村村 2020.03.13

JSON.parse无法确保您解析的json字符串的安全。您应该查看json-safe-parse之类的库或类似的库。

从json-safe-parse npm页面:

JSON.parse很棒,但是它在JavaScript上下文中有一个严重的缺陷:它允许您覆盖继承的属性。如果您要从不受信任的来源(例如,用户)解析JSON,并在其上调用您希望存在的函数,这可能会成为问题。

小小理查德 2020.03.13
JSON.parse("your string");

就这样。

Itachi泡芙Pro 2020.03.13

这里的每个人都讲过JSON.parse,所以我想说些别的。有一个很棒的模块,可以与许多中间件连接,以使应用程序的开发变得更轻松,更好。中间件之一是bodyParser它解析JSON,html表单等。还有一个仅用于JSON解析noop的特定中间件

看一下上面的链接,它可能对您确实有帮助。

Harry小胖 2020.03.13

包括node-fs库。

var fs = require("fs");
var file = JSON.parse(fs.readFileSync("./PATH/data.json", "utf8"));

有关“ fs”库的更多信息,请参见位于http://nodejs.org/api/fs.html的文档。

阿飞小卤蛋 2020.03.13

由于您不知道您的字符串实际上是有效的,因此我将其放在try catch中。另外,由于try catch块未按节点进行优化,因此我会将整个内容放入另一个函数中:

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)
      }
    })
}
宝儿逆天 2020.03.13

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

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

梅老丝 2020.03.13

您可以简单地使用JSON.parse

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

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

Jim前端 2020.03.13

使用JSON对象

JSON.parse(str);

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android