JSON基础了解

本文介绍了JSON的基本概念,包括其格式特点、字符串解析方法及实际应用案例,并探讨了JSON与Ajax结合进行前后台交互的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Json指的是JavaScript对象表示法,是轻量级的文本数据交换格式,主要用于在服务器的Web应用程序之间传输数据;


基本格式:

var object1 = { 
        "language" : "Java", 
        "author"  : "herbert schildt" 
    };
这种是对象格式;

var people = [
        {"firstname" : "zheng", "lastname" : "jie"},
        {"firstname" : "xia", "lastname" : "yang"},
        {"firstname" : "xue", "lastname" : "qinaiqan"}
    ];
这种是对象数组格式;


常用的两种将字符串解析成Json对象方法有:

1、JSON.parse(str)

只能解析属性名用双引号包裹的对象;

function toJson(str){
 return JSON.parse(str);
}

2、eval()

用法如下:

<script type="text/javascript">
	var str = '{"name":"zjzjzj","age":18,"sex":"women"}';
	var obj = eval('('+str+')');
	for(var s in obj){
		console.log(s+"="+obj[s]);
	}
</script>
结果为:


注意到eval()的使用方法为:

eval('('+str+')')

原因是eval本身的问题。 由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。

对于服务器返回的JSON字符串,如果jquery异步请求将type(一般为这个配置属性)设为“json”,或者利 用$.getJSON()方法获得服务器返回,那么就不需要eval()方法了,因为这时候得到的结果已经是json对象了,只需直接调用该对象即可;


3、new Function方法

function toJson(str){
 var json = (new Function("return " + str))();
 return json;
}

以上三种方法中,第二种用的比较多;


然后是JSON.stringify()是将Json对象又返回成原始字符串;


对象的删除方法:

	var object = {
		"name":"zjzjzj",
		"age":18,
		"sex":"women"
	};
	delete object.name;
使用delete关键字;


for-in遍历

上面介绍eval()方法时写过如下代码:

var str = '{"name":"zjzjzj","age":18,"sex":"women"}';
	var obj = eval('('+str+')');
	for(var s in obj){
		console.log(s+"="+obj[s]);
	}
此遍历方法,s指的是字符串,所以obj[s]就相当于obj["name"]之类的依次遍历;


JSON调用(简单实例)

通过JQuery利用ajax方法进行调用,提交和请求数据:

$.ajax({
    url: "http://www.hzhuti.com",     //请求的url地址
    dataType: "json",                 //返回格式为json
    async: true,                      //求是否异步,默认为异步,这也是ajax重要特性
    data: {
    	   "name":"zjzjzj",
	       "sex":"women",
	       "age":18},                 //参数值,这里用的就是JSON的格式
    type: "POST",                     //请求方式
    beforeSend: function() {
        //请求前的处理
    },
    success: function(req) {
        //请求成功时处理
    },
    complete: function() {
        //请求完成的处理
    },
    error: function() {
        //请求出错处理
    }
});

其中:

type:请求方式 GET/POST; 

url:(默认: 当前页地址) 发送请求的地址;

async:布尔类型,默认为true 表示请求是否为异步,如果为false表示为同步;

dataType:预期服务器返回的数据类型;

data:发送到服务器的数据。将自动转换为请求字符串格式;

beforeSend:请求前处理;

success:调用成功执行的函数; 

complete:请求完成处理;

error:异常处理函数;



反思:

JSON和Ajax配合使用,进行前后台的交互;暂时学习的只是基础的语法规范,以及实例使用,没有在真正的项目中使用过;所以掌握的不够好,后续遇到问题要记得不定时的补充完善;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值