我应该如何使用Node.js解析JSON ?是否有一些模块可以安全地验证和解析JSON ?
当前回答
var fs = require('fs');
fs.readFile('ashish.json',{encoding:'utf8'},function(data,err) {
if(err)
throw err;
else {
console.log(data.toString());
}
})
其他回答
正如这里提到的其他答案,你可能想要一个本地json文件,你知道是安全的,就像一个配置文件:
var objectFromRequire = require('path/to/my/config.json');
或者使用全局JSON对象将字符串值解析为对象:
var stringContainingJson = '\"json that is obtained from somewhere\"';
var objectFromParse = JSON.parse(stringContainingJson);
请注意,当您需要一个文件时,该文件的内容会被评估,如果它不是json文件而是js文件,则会引入安全风险。
在这里,我发布了一个演示,你可以看到这两种方法,并在线使用它们(解析示例在app.js文件中-然后点击运行按钮,在终端中看到结果): http://staging1.codefresh.io/labs/api/env/json-parse-example
您可以修改代码并查看影响…
包括node-fs库。
var fs = require("fs");
var file = JSON.parse(fs.readFileSync("./PATH/data.json", "utf8"));
有关'fs'库的更多信息,请参阅http://nodejs.org/api/fs.html的文档
var fs = require('fs');
fs.readFile('ashish.json',{encoding:'utf8'},function(data,err) {
if(err)
throw err;
else {
console.log(data.toString());
}
})
利用Lodash的attempt函数返回一个错误对象,可以用isError函数处理。
// Returns an error object on failure
function parseJSON(jsonString) {
return _.attempt(JSON.parse.bind(null, jsonString));
}
// Example Usage
var goodJson = '{"id":123}';
var badJson = '{id:123}';
var goodResult = parseJSON(goodJson);
var badResult = parseJSON(badJson);
if (_.isError(goodResult)) {
console.log('goodResult: handle error');
} else {
console.log('goodResult: continue processing');
}
// > goodResult: continue processing
if (_.isError(badResult)) {
console.log('badResult: handle error');
} else {
console.log('badResult: continue processing');
}
// > badResult: handle error
只是想完成答案(因为我挣扎了一段时间),想展示如何访问json信息,这个例子显示了访问json数组:
Var request = require('request'); 请求(“https://server/run?oper_get_groups_joined_by_user_id &user_id=5111298845048832',函数(错误,响应,body) { 如果(!错误&&响应。statusCode == 200) { var jsonArr = JSON.parse(body); console.log (jsonArr); console.log("group id:" + jsonArr[0].id); } })
推荐文章
- 窗口。亲近与自我。close不关闭Chrome中的窗口
- 为什么PHP的json_encode函数转换UTF-8字符串为十六进制实体?
- 同步和异步编程(在node.js中)的区别是什么?
- 在d3.js中调整窗口大小时调整svg的大小
- 如何编辑通过npm安装的节点模块?
- 如何将两个字符串相加,就好像它们是数字一样?
- 绑定多个事件到一个监听器(没有JQuery)?
- Ajax会调用什么样的响应,比如'for (;;);{json data}的意思?
- 在JavaScript中将JSON字符串解析为特定对象原型
- 将字符串“true”/“false”转换为布尔值
- 如何使用JavaScript代码获得浏览器宽度?
- event.preventDefault()函数在IE中无法工作
- indexOf()和search()的区别是什么?
- 错误:'types'只能在.ts文件中使用- Visual Studio Code使用@ts-check
- React-Native:应用程序未注册错误