前提
Json在前端页面返回给后台数据处理已经占据很大的比例,在这里做出一些总结。
Json字符串和Json对象示例:
1.Json对象
var jsonobj={
"name":"summer",
"age":20,
"school":["小学","中学","大学"]
}
2.Json字符串
var jsonstr = '{
"name":"summer",
"age":20,
"school":["小学","中学","大学"]
}'
注意:
前端与客户端交互,传值一般是通过JSON字符串传值的,而不是JSON对象,查看一个前端给的JS是JSON字符串
!!!
JSON字符串与JSON对象相互转化
方式一.jQuery插件
.jQuery插件支持的转换方式:
var jsonobj = $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象
或者
var jsonobj = jsonstr .parseJSON(); //由JSON字符串转换为JSON对象
使用该方法对json字符串的要求比较高,必须符合json格式,属性名和属性值必须使用双引号。
方式二.Javascript
.Javascript支持的转换方式:
var jsonobj = eval('(' + jsonstr + ')'); //可以将json字符串转换成json对象,注意需要在json字符外包裹一对小括号
//或者
var jsonobj = eval("(" + jsonstr + ")");
eval最好用来转换简单的字符串,如果含有表达式,或者对象之类的复杂json串,不建议使用eval()。
eval()的速度非常快,但可以编译以及执行任何javaScript程序,所以会存在安全问题。
需要使用更安全的json解析器。在服务器不严格的编码在json或者如果不严格验证的输入,就有可能提供无效的json或者载有危险的脚本,在eval()中执行脚本,释放恶意代码。
方式三.浏览器支持的转换方式
浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器:
var jsonobj = JSON.parse(jsonstr); //可以将json字符串转换成json对象
var jsonstr= JSON.stringify(jsonobj); //可以将json对象转换成json对符串
特别的:
ie8(兼容模式),ie7和ie6没有JSON对象,推荐采用JSON官方的方式,引入json.js。
方式四.JSON官方
JSON官方的转换方式:
var jsonobj = JSON.parse(jsonstr);//使用parse()转换为json对象,
var jsonstr= JSON.stringify(jsonobj );//使用 stingify()将对象转换为字符串;
json.js里面的方法:
对象转为字符串:通过JSON.encode方法
字符串转换为对象:使用JSON.decode方法