Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)


Posted in Javascript onOctober 25, 2016

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

一、JSON字符串转换为JSON对象: eval() 和 JSON.parse

eg- json字符串:

var data = '{ "name": "dran", "sex": "man" }';
var obj = eval("("+data+")"); 或者
var obj = JSON.parse(data);

然后,就可以这样读取: alert(obj.name + obj.sex);

提示:为什么要 eval这里要添加 ("("+data+")");呢?

原因在于:eval本身的问题。 由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。

加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句

二、JSON对象转换为JSON字符串 : obj.toJSONString()或者全局方法JSON.stringify(obj) (obj代表json对象)

eg-json对象: var obj = { "name": "dran", "sex": "man" };
var jstring = JSON.stringify(obj) ;// 建议用这个
var jstring = obj.toJSONString(); //toJSONString()不是js原生的方法,需要引入相应的库或自己定义后才能用 (不习惯用)

然后,就可以这样读取: alert(jstring);

注意:

目前,Firefox、Opera、IE8以上版本也提供了本地JSON支持。其中,JSON解释器提供的函数有:JSON.parse、JSON.stringify。

对于那些并不提供本地JSON支持的浏览器可以引入脚本json2.js,来实现JSON转换功能。json2.js脚本可到https://github.com/douglascrockford/JSON-js/blob/master/json2.js页面下载

在AJAX实现前后台数据交互的时候,通常使用JSON的数据格式,对于JSON来说,有严格的代码规范,一旦格式出问题,就无法显示出相应效果,同时还不在控制台报错

补充: ajax读取json数据拼接显示:

json文件:

{
"first":[
{"name":"张三","sex":"男","like":["吃饭","睡觉","打豆豆"]},
{"name":"李四","sex":"男"},
{"name":"王武","sex":"男"},
{"name":"李梅","sex":"女"},
],
"second":[
{"name":"上海大学","area":"上海"},
{"name":"武汉大学","area":"武汉"},
{"name":"北京大学","area":"北京"},
{"name":"山东大学","area":"山东"},
]
}

html和ajax代码

1、用for循环

$.ajax({
url : "ceshi.json",
type : "POST", 
dataType :"text", //浏览器把json文件当作文本文件 不然读取不出来 权宜之策就改成了text, 因为测试, json文件格式正确书写
success: function(data) { 
var dataJson = eval("("+data+")"); // 将json字符串数据解析成对象
var arr1 = dataJson.first;
var arr2 = dataJson.second;
//一栏显示 用for循环完成数组解析
for(var i = 0; i<arr1.length; i++){ 
for(var j = 0; j<arr2.length; j++){
var str='<div style="display:block">'+
'<div>姓名:'+arr1[i].name+' 性别:'+arr1[i].sex+'</div>'+
'<div>学校:'+arr2[j].name+'</div>'+
'<div>地点:'+arr2[j].area+'</div>'+
//'<div>喜好:'+arr1[i].like+'</div>'+ //全显示
//'<div>喜好:'+arr1[i].like[1]+'</div>'+ //单独设置
//'<div>喜好:'+arr1[i].like[0]+'</div>'+
'</div>';
}
$(".result").append(str);
}
//分层显示
//var str = "";
// var str1 = "";
// if (arr1 != null) {
// for (var i = 0; i < arr1.length; i++) { //这里面都是创建并赋值
// str += "<span>" + arr1[i].name + "</span><span>" + arr1[i].sex + "</span><br>";
// }
// $(".result").html(str);
// }
// if (arr2 != null) {
// for (var j = 0; j < arr2.length; j++) {
// str1 += "<span>" + arr2[j].name + "</span><span>" + arr2[j].area+ "</span><br>";
// }
// $(".result2").html(str1);
// }
},
error:function(data){
alert("error"); 
}
})
<div class="result">frist:</div>
<div class="result2">second:</div>
for

2、 each循环 使用$.each方法遍历返回的数据date,插入到class为 .result中

JSON:

[
{"name":"张三","sex":"男","like":["吃饭","睡觉","打豆豆"]},
{"name":"李四","sex":"男"},
{"name":"王武","sex":"男"},
{"name":"李梅","sex":"女"},
]
$.ajax({
url : "ceshi.json",
type : "POST", 
dataType :"text", //浏览器把json文件当作文本文件 不然读取不出来 权宜之策就改成了text, 因为测试, json文件格式正确书写
success: function(data) { 
var dataJson = eval("("+data+")"); // 将json字符串数据解析成对象
//each循环 使用$.each方法遍历返回的数据date,插入到class为 .result中 i 表示索引 item 信息值 对象 
$.each(dataJson,function(i,item){
var str='<div style="display:block">'+
'<div>姓名:'+item.name+' 性别:'+item.sex+'</div>'+
'<div>like:'+item.like+'</div>'+
'</div>'; 
$(".result").append(str); 
})
},
error:function(data){
alert("error"); 
}
})
<div class="result"></div>
each

PS:对于一般的js生成json对象,只需要将$.each()方法替换为for语句即可,其他不变

JSON 数据使用方法:

//json对象:
var jsonObj= {
"name":" 张三",
"sex":"男",
"age":26,
};
使用: jsonObj.name= "张三"
jsonObj.age= "26"
//json数组: []下标 从 0 开始
var jsonArr =[
{"name":"张三","sex":"男","like":["吃饭","睡觉","打豆豆"]},
{"name":"李四","sex":"男"},
{"name":"王武","sex":"男"},
]
使用: jsonArr[0].sex="男"
jsonArr[1].name="李四"
//多个数组: []下标 从 0 开始
var options = {
"city" :[
{ 
"name":"上海",
"area":"普陀区",
"option":"真北路",
"correct":"1"
},
{
"name":"石家庄",
"area":"河北",
"option":"在北方",
"correct":"2"
}],
"world":[
{
"title":"美国",
"content":"好莱坞大片 科幻"
},
{
"title":"中国",
"content":"爱我中华,虽远必诛"
}
]
};
options.city[0].area="普陀区"
options.world[1].content="爱我中华,虽远必诛

以上所述是小编给大家介绍的Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript 中that的含义示例介绍
May 14 Javascript
Javascript变量的作用域和作用域链详解
Apr 02 Javascript
JavaScript中window.open用法实例详解
Apr 15 Javascript
详解js中class的多种函数封装方法
Jan 03 Javascript
微信小程序 navigation API实例详解
Oct 02 Javascript
javascript实现消灭星星小游戏简单版
Nov 15 Javascript
基于JavaScript实现右键菜单和拖拽功能
Nov 28 Javascript
关于Vue.js 2.0的Vuex 2.0 你需要更新的知识库
Nov 30 Javascript
JS 组件系列之BootstrapTable的treegrid功能
Jun 16 Javascript
JavaScript之面向对象_动力节点Java学院整理
Jun 29 Javascript
React 实现拖拽功能的示例代码
Jan 06 Javascript
jQuery实现适用于移动端的跑马灯抽奖特效示例
Jan 18 jQuery
利用yarn实现一个webpack+react种子
Oct 25 #Javascript
Yarn的安装与使用详细介绍
Oct 25 #Javascript
jQuery通过ajax快速批量提交表单数据
Oct 25 #Javascript
jquery popupDialog 使用 加载jsp页面的方法
Oct 25 #Javascript
JavaScript模仿Pinterest实现图片预加载功能
Oct 25 #Javascript
微信小程序 video组件详解
Oct 25 #Javascript
微信小程序 form组件详解
Oct 25 #Javascript
You might like
VOLVO车载收音机
2021/03/02 无线电
php4与php5的区别小结(配置异同)
2011/12/20 PHP
PHP批量采集下载美女图片的实现代码
2013/06/03 PHP
PHP获取音频文件的相关信息
2015/06/22 PHP
php将远程图片保存到本地服务器的实现代码
2015/08/03 PHP
简单实现php上传文件功能
2017/09/21 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
2020/08/11 PHP
[JSF]使用DataModel处理表行事件的实例代码
2013/08/05 Javascript
javascript:void(0)的作用示例介绍
2013/10/28 Javascript
调整小数的格式保留小数点后两位
2014/05/14 Javascript
深入理解Javascript中this的作用域
2014/08/12 Javascript
jQuery实现转动随机数抽奖效果的方法
2015/05/21 Javascript
Bootstrap实现input控件失去焦点时验证
2016/08/04 Javascript
JS中对数组元素进行增删改移的方法总结
2016/12/15 Javascript
vue.js的双向数据绑定Object.defineProperty方法的神奇之处
2019/01/18 Javascript
vue-cli4使用全局less文件中的变量配置操作
2020/10/21 Javascript
使用vue编写h5公众号跳转小程序的实现代码
2020/11/27 Vue.js
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
2015/03/19 Python
python实现linux下使用xcopy的方法
2015/06/28 Python
详解Python中的__new__、__init__、__call__三个特殊方法
2016/06/02 Python
Python3列表内置方法大全及示例代码小结
2019/05/10 Python
Python批量生成幻影坦克图片实例代码
2019/06/04 Python
Python PIL读取的图像发生自动旋转的实现方法
2019/07/05 Python
Python绘制热力图示例
2019/09/27 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
Python3利用openpyxl读写Excel文件的方法实例
2021/02/03 Python
瑞典的玛丽小姐:Miss Mary of Sweden
2019/02/13 全球购物
请问如下代码执行后a和b的值分别是什么
2016/05/05 面试题
大学生优秀自荐信范文
2014/02/25 职场文书
校园公益广告语
2014/03/13 职场文书
法律顾问服务方案
2014/05/15 职场文书
股份转让协议书范本
2015/01/27 职场文书
2015年六一儿童节演讲稿
2015/03/19 职场文书
普通员工辞职信范文
2015/05/12 职场文书
大学文艺委员竞选稿
2015/11/19 职场文书
基于CSS制作创意端午节专属加载特效
2022/06/01 HTML / CSS