✿✿✿JavaScript --- JSON

1.JSON的简介

2.JSON的语法规则

3.JSON 字符串转换为 JavaScript 对象

4.常用的JSON相关的函数

5.JSON对象的遍历

6.补充:JS中的this关键字


1.JSON的简介

        JSON( JavaScript Object Notation ) 是用于存储和传输数据的格式(一种轻量级的数据交换格式 ),通常用于服务端向网页传递数据 。 JSON 使用 JavaScript 语法,但是 JSON 格式仅仅是一个文本。 文本可以被任何编程语言读取及作为数据格式传递。

JSON 格式在语法上与创建 JavaScript 对象代码是相同的。由于它们很相似,所以 JavaScript 程序可以很容易的将 JSON 数据转换为 JavaScript 对象。

2.JSON的语法规则

JSON有固定的语法格式,如果格式不对,就解析不了。以下 JSON 语法定义了 sites 对象: 3 条网站信息(对象)的数组。即对象 "sites" 是一个数组,包含了三个对象。每个对象为站点的信息(网站名和网站地址)。

{"sites":[
{"name":"Runoob", "url":"www.runoob.com"},
{"name":"Google","url":"www.google.com"},
{"name":"Taobao", "url":"www.taobao.com"}
]}

由上可知语法规则:( 数据为 键/值 对  /  数据由逗号分隔  /  大括号保存对象  /  大括号保存对象  /  方括号保存数组 

  • JSON字符串,要有紧凑格式,不要有换行和空格,键要使用双引号引起来。
  • JSON 对象全部保存在大括号内。就像在 JavaScript 中, 对象可以保存多个 键/值 对。
  • JSON 数组保存在中括号内。 就像在 JavaScript 中, 数组可以包含对象。

			var arr = [{
				"name": "张三",
				"age": 23,
				"sex": "女"
			}, {
				"name": "李四",
				"age": 24,
				"sex": "女"
			}, {
				"name": "王五",
				"age": 23,
				"sex": "男"
			}]

			for (index in arr) {
				var jsonObj = arr[index];
				for (key in jsonObj) {
					var value = jsonObj[key];
					alert(key + "====" + value);
				}
			}
		

JSON数据中属性的添加,修改和删除如下代码:

<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			var person = {
				"name": "张三",
				"age": 23,
				"car": {
					"carName": "宝马",
					"carColor": "白色",
					"carPrice": 888888
				}
			}
			var name = person.car.carName;
			alert(name);
			//修改一个属性
			person.name = "李四";
			alert(person.name);
			//添加一个 属性
			person.sex = "女";
			console.log(person);
			//删除一个属性
			delete person.age;
			console.log(person);
			var shengfen = {
				"陕西省": ["西安", "商洛", "咸阳"]
			}
			var v = shengfen.陕西省[2];
			alert(v);
		</script>
	</head>
	<body>
	</body>
</html>

3.JSON 字符串转换为 JavaScript 对象

通常我们从服务器中读取 的JSON 数据以及网页中显示数据,皆以字符串数据类型展示的。如果想要拿到JSON数据并使用,需要将JSON字符串转换为JavaScript 对象。使用 JavaScript 内置函数 JSON.parse() 进行转换。如:var obj = JSON.parse(text);

            //JSON对象
			var student = {
				"name": "张三",
				"age": 23,
				"sex": "男",
				"flag": true,
				"sal": 3.58
			}
			var name = student.name;
			alert(name);
			var jsonStr = '{"name": "李四","age": 23,"sex": "男","flag": true,"sal": 3.58}';

			//JSON对象和JSON字符的互转
			//把JSON字符串,转换成JSON对象
			var jsonObj = JSON.parse(jsonStr);
			var v = jsonObj.name;
			alert(v);

			var jsStirng = JSON.stringify(student);
			alert(jsStirng);

			//其他语言,比如Java,他要给前台返回JSON数据,只能是以JSON字符串返回,前台收到后,转换成JSON对象,取数据,JSON格式的字符串就成为我们网络传输首选的数据格式,轻巧,利用阅读和解析。
			var jStr =
				'{"data":{"yesterday":{"date":"8日星期一","high":"高温 35℃","fx":"东南风","low":"低温 25℃","fl":"<![CDATA[1级]]>","type":"多云"},"city":"商洛","forecast":[{"date":"9日星期二","high":"高温 34℃","fengli":"<![CDATA[2级]]>","low":"低温 25℃","fengxiang":"东南风","type":"小雨"},{"date":"10日星期三","high":"高温 31℃","fengli":"<![CDATA[2级]]>","low":"低温 23℃","fengxiang":"东南风","type":"多云"},{"date":"11日星期四","high":"高温 34℃","fengli":"<![CDATA[2级]]>","low":"低温 24℃","fengxiang":"西南风","type":"多云"},{"date":"12日星期五","high":"高温 35℃","fengli":"<![CDATA[2级]]>","low":"低温 24℃","fengxiang":"南风","type":"阴"},{"date":"13日星期六","high":"高温 35℃","fengli":"<![CDATA[2级]]>","low":"低温 23℃","fengxiang":"南风","type":"阴"}],"ganmao":"感冒低发期,天气舒适,请注意多吃蔬菜水果,多喝水哦。","wendu":"28"},"status":1000,"desc":"OK"}';
			var myObj = JSON.parse(jStr);
			var type = myObj.data.yesterday.type;
			alert(type);

4.常用的JSON相关的函数

函数描述
JSON.parse()用于将一个 JSON 字符串转换为 JavaScript 对象。
JSON.stringify()用于将 JavaScript 值转换为 JSON 字符串。

5.JSON对象的遍历

<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			var student = {
				"name": "张三",
				"age": 23,
				"sex": "男",
				"flag": true,
				"sal": 3.58,
			}
			//遍历对象
			for (key in student) {
				var value = student[key];
				alert(value);
			}
			var arr = ["aaa", "bbb", "ccc", "ddd"];
			for (index in arr) {
				var ele = arr[index];
				alert(ele);
			}
		</script>
	</head>
	<body>
	</body>
</html>

6.补充:JS中的this关键字

  • 在全局作用域中的this以及全局作用域中定义的函数,函数中的this,还有定时器中的this,都代表window对象。
  • 事件的处理函数中的this代表,绑定了该事件的元素对象。
  • 构造函数中的this,代表的就是new的这个对象。

可以通过call方法来改变this的执行。

<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<button id="btn">一个按钮</button>
	</body>
	<script>
		//全局作用域中,定义的函数,函数中的this 代表window对象
		function show() {
			alert(this);
		}
		
		//事件的处理函数中的this代表,绑定了该事件的元素对象
		var btn = document.getElementById("btn");
		btn.onclick = function() {
			alert(this == btn);
		}

		//定义构造函数
		function Person(name, age, sex) {
			//封装属性
			var myObj = this;
			this.pname = name;
			this.page = age;
			this.psex = sex;
			//封装功能
			this.eat = function(ename) {
				alert(ename);
				return myObj;
			}
		}
		//构造函数中的this,代表的就是你new的这个对象
		var p1 = new Person("李四", 24, "女");
		var obj = p1.eat("hehe");
		var jsonObj = {
			"name": "哈哈",
			"sleep": function(obj) {
				console.log(this == obj);
			}
		}
		jsonObj.sleep(jsonObj);

		//定时器中的this 也是window
		var show2 = function(obj) {
			alert(this.username);
		}

		setTimeout(show2({
			"username": "王老虎"
		}), 1000);
		var show3 = function(obj) {
			alert(this.username);
		}
		//通过call方法来改变this的执行
		setTimeout(show3.call({
			"username": "王老虎"
		}), 1000);
	</script>
</html>

(小编也在努力学习更多哟!以后再慢慢分享的啦!)

希望对友友们有所帮助!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

naoguaziteng

谢谢友友的打赏!一起努力吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值