『壹』 node js中处理json字符串中含有转义符号\ ,不能解析成json对象
使用JSON从后台向前台传输数据的时候,当数据本身含有一些特殊字符,会导致数据的解析出错。
使用下面的方法对即将向前台输出的json字符串进行处理,可以解决键盘上能输入的所有特殊字符问题。
//当文本中含有如下特殊字符时,此方法可以成功处理,让其在前台被正确解析,注意:此法不能处理单引号
public static String stringToJson(String s) {
StringBuffer sb = new StringBuffer ();
for (int i=0; i<s.length(); i++) {
char c = s.charAt(i);
switch (c) {
case '\"':
sb.append("\\\"");
break;
// case '\\': //如果不处理单引号,可以释放此段代码,若结合下面的方法处理单引号就必须注释掉该段代码
// sb.append("\\\\");
// break;
case '/':
sb.append("\\/");
break;
case '\b': //退格
sb.append("\\b");
break;
case '\f': //走纸换页
sb.append("\\f");
break;
case '\n':
sb.append("\\n"); //换行
break;
case '\r': //回车
sb.append("\\r");
break;
case '\t': //横向跳格
sb.append("\\t");
break;
default:
sb.append(c);
}}
return sb.toString();
}
//注意,下面的方法是在把你的数据文本接入json数据字符串之前使用,预先对文本做处理后在接入JSON字符串
//处理文本中的单引号 和 斜杠
public static String StringDanYinToJSON(String ors) {
ors = ors == null ? "" : ors;
StringBuffer buffer = new StringBuffer(ors);
int i = 0;
while (i < buffer.length()) {
if (buffer.charAt(i) == '\'' || buffer.charAt(i) == '\\') {
buffer.insert(i, '\\');
i += 2;
} else {
i++;
}
}
return buffer.toString();
}
『贰』 如何用nodejs请求json并生成html内容
服务器用nodejs写,创建一个服务器监听具体url并用回调函数处理,返回json数据
『叁』 如何使用node.js生成json数据
使用node.js生成json数据代码如下版:权
varhttp=require('http');
vardata={key:'value',hello:'world'};
varsrv=http.createServer(function(req,res){
res.writeHead(200,{'Content-Type':'application/json'});
res.end(JSON.stringify(data));
});
srv.listen(8080,function(){
console.log('listeningonlocalhost:8080');
});
『肆』 NodeJS项目基础结构简单介绍
按照常规,去执行npm start
或者在Terminal中手动输入命令,结果如下:
可以看到是执行了test/package.json文件中的 start 命令,初始packagejson.json文件内容如下:
执行 start ,对应的命令为 node ./bin/www 并在命令行执行。现在项目已经启动成功了,可以打开浏览器输入 localhost:3000 查看一下,但是本次侧重点在于项目启动时候发生的完整的过程。所以……
那么我们需要看一下 ./bin/www 文件
通过 require() 来引入本地安装的包,这里加载了三个包 app、debug 、http ,主要关注一下app.js
可以看到app加载的为该项目基础组件,核心为 var app = express(); 看一下express.js
将app用到的中间件等暴露出来,所以 app = express() 实际上就是加载应用基础组件,生成项目的根节点(当然这个节点是复合的)。所以在app.js中,进行的是加载应用基础组件并进行应用设置初始化(包含了视图目录设置、页面模板引擎设置、中间件的设置、静态资源目录设置以及错误捕捉相关内容)。
继续回到 www.js ,同样将debug配置、http相关组件进行加载。继而是默认端口号的设定。通过http.createServer(app),创建应用服务相关信息,并对端口进行监听。
浏览器输入 localhost:3000
控制台显示:
说明在以 GET 方式请求URI为 "/" 的资源,并以 GET 方式请求 /stylesheets/style.css 资源,这个发生在app.js中我们设定的资源请求。
我们来看下 ./routes/index 文件
即定义网站主页的路由
使用 express.Router 类创建模块化、可挂载的路由句柄(简称:路由模块)。Router 实例是一个完整的中间件和路由系统。最终,在应用中加载路由模块app.use('/', indexRouter);
通过 res.render 对视图进行渲染,上述为对index.ejs的渲染。 ps:在app.js中已经设定了views的所在目录 。语法: res.render(view [,locals] [,callback])
示例:
区别:路由句柄
为请求处理提供多个回调函数,其行为类似 中间件 。唯一的区别是这些回调函数有可能调用 next('route') 方法跳至下一个同路由的回调函数而略过其他路由回调函数。路由句柄有多种形式,可以是一个函数、一个函数数组,或者是两者混合。
使用一个回调函数处理路由:
使用多个回调函数处理路由(记得指定 next 对象):
使用回调函数数组处理路由:
混合使用函数和函数数组处理路由:
区别:路由方法
一个路由示例:
路由方法源于 HTTP 请求方法,和 express 实例相关联。
获取express的一个实例 app ,通过路由方法(和HTTP请求对应),GET方式请求 "/"。详细的路由方法参考链接: 路由方法
『伍』 JSON,JS,NODEJS三者的关系是怎样
三者性质完全不一样
JS是JavaScript语言,是一种解释性编程语言
JSON是JavaScript Object Notation,意思是JS语言中对象的表达专法,常用于数据传输(与属XML的作用类似),常在AJAX中替代XML
NodeJS是一种服务端平台,可以在服务端运行用JavaScript写的服务端脚本
注意的是:JS中函数本身就是个对象,所以函数可以作为形参不是NodeJS独有的,准确的说,NodeJS就是用Chrome浏览器的Google V8解释器来解释JS
总结来说:
JS是个编程语言
JSON是一种数据格式(没有逻辑只有数据)
NodeJS是个软件(JS服务端运行环境)
顺带一提:HTML是XML的派生(HTML是一种XML)但是为了适应其特定作用而有所改变,HTML(XML)与JSON同为数据表达语言,严格来讲并不包含逻辑只包含数据。