我应该如何使用Node.js解析JSON ?是否有一些模块可以安全地验证和解析JSON ?
当前回答
为了安全起见,用这个吧
var data = JSON.parse(Buffer.concat(arr).toString());
其他回答
您可以简单地使用JSON.parse。
JSON对象的定义是ECMAScript 5规范的一部分。node.js基于谷歌Chrome V8引擎,符合ECMA标准。因此,node.js也有一个全局对象JSON[docs]。
注- JSON。Parse会占用当前线程,因为它是一个同步方法。因此,如果您计划解析大型JSON对象,请使用流式JSON解析器。
不需要其他模块。 只使用 var parsedObj = JSON.parse(yourObj); 我不认为这有任何安全问题
JSON。解析将不能确保你正在解析的json字符串的安全性。您应该查看类似于json-safe-parse或类似的库。
来自json-safe-parse npm页面:
JSON。parse非常棒,但是它在JavaScript上下文中有一个严重的缺陷:它允许重写继承的属性。如果解析JSON来自一个不受信任的源(例如:用户),并在其上调用您希望存在的函数,这就会成为一个问题。
使用JSON对象:
JSON.parse(str);
由于您不知道您的字符串实际上是有效的,因此我将首先将它放入try catch中。另外,由于try catch块不是按节点优化的,我将把整个事情放在另一个函数中:
function tryParseJson(str) {
try {
return JSON.parse(str);
} catch (ex) {
return null;
}
}
“异步风格”的OR
function tryParseJson(str, callback) {
process.nextTick(function () {
try {
callback(null, JSON.parse(str));
} catch (ex) {
callback(ex)
}
})
}
推荐文章
- 使用Python将XML转换为JSON ?
- 当你双击日文文本时,Chrome如何决定突出显示什么?
- npm install和npm run build有什么区别?
- 使用async/await尝试/捕获块
- 为什么.json()返回一个承诺?
- 更改mocha的默认超时时间
- 如何设置一个iframe src属性从一个变量在AngularJS
- 解析日期没有时区javascript
- 是否有一种方法可以检查数据属性是否存在?
- Chrome不会删除会话cookie
- 如何在JavaScript中获得UTC时间戳?
- 如何使用jQuery等待CSS3过渡结束?
- 在Chrome和Firefox中用Javascript报告的神秘的“脚本错误”
- 设置CSS属性在JavaScript?
- 右击是Javascript事件吗?