使用nodejs解析json数据
目录
- nodejs解析json数据
- 第一
- 第二
- 第三
- 第四
- node.js解析本地json
- 从文件读取json
- 解析json字符串为json对象
- 扩展
nodejs解析json数据
nodejs是服务器端的javascript的处理平台。json(JavaScript Object Notation) 是一种轻量级的数据交换格式。我们在写服务端的程序时往往需要使用json来处理数据。
这里我们用一个简单的例子来演示如何用nodejs来处理json数据文件。
第一
我们需要在ubuntu14.04上安装nodejs,我们可以使用如下命令:
$ sudo apt-get install nodejs
安装完毕, 我们可以使用如下命令进行测试:
$ nodejs -v v0.10.25
第二
准备一个测试json文件, test.json,内容如下:
{ "person": { "name": "wanger", "birth": "1999" } }
第三
创建js脚本来解析json文件,main.js
#!/usr/bin/nodejs var cwd = process.argv[1].substring(0, process.argv[1].lastIndexOf("/")); var fs = require('fs'); function load(file, cb) { fs.readFile(file, function(err, data) { if (err) throw err; cb(JSON.parse(data.toString())); }); } (function() { if (process.argv.length < 2) { console.log("usage\n\t" + process.argv[1] + " loadfile"); return; } load(process.argv[2], function(obj) { console.log("%s\n", obj.person.name); console.log("%s\n", obj.person.birth); }); })();
第四
测试和运行
$ ./main.js test.json wanger 1999
node.js解析本地json
具体操作:
从文件读取json并且解析字符串为json对象
从文件读取json
node.js中的文件操作基本都是在fs模块中,这里用的是同步读取文件,读出来是个字符串。
const fs = require('fs'); var jsonfile = fs.readFileSync(__dirname+"/test.json", "utf8"); console.log(jsonfile);
其中require(‘fs’): 导入fs模块
readFileSync(“文件路径”,“编码格式”)
注:使用的是同步的方式读取的文件
解析json字符串为json对象
jsonplust是解析json的一个开源库使用非常简单。
安装:
npm install --save-dev jsonplus
使用:
var jsonplus = require('jsonplus'); // Parse like you would with JSON.parse var response = jsonplus.parse(jsonfile); console.log(response["type"]);
其中require(‘jsonplus’)导入jsonplus模块
jsonplus.parse(jsonfile)
jsonfile是刚刚从json文件中读出来的字符串
接着就可以用json对象的方式访问里面的数据了。
扩展
该模块还可以使用模板方法:
Resolve函数:
var resolve = require('jsonplus').resolve // This will resolve all reference strings on the given object var object = resolve(AlreadyParsedJSON); // resolve has a second argument, which provides the context for references var object = resolve({ full: '{{ first }} {{ last }}' }, { first: 'john', last: 'doe' }); console.log(object) // { full: 'john doe' }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
赞 (0)