1.JSON语法
<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title>Document</title> ???</head><body> ???<!-- ????????1.Jason是另一种创建对象实例的方法 ???????2.json数据的表示方式成对的参数与值 ???????3.可以转换为字符串进行存储和转换 ????--> ????<script> ???????var jsonobject= ???????{ ???????????//参数和值的对应关系 ???????????"gushi1":"落花人独立", ???????????"gushi2":"微雨燕双飞" ???????} ???????alert(jsonobject.gushi1); ???</script></body></html>
2.JSON优点
1)序列化的数据便于在网络环境中进行存储和传输
2)JSON的用途类似于XML,但是它更容易阅读和理解
3)XML解析过程慢,JSON提供的是JavaScript对象可以随时使用
3.JSON易于阅读
1)JSON可以快速创建和解析
2)是JavaScript的一个子集,不需要特殊的解释程序或额外的软件包
3)见名知意
4)概念简单.都是 "参数":"值"对
3.访问JSON数据
1)去序列化:还原JSON字符串编码的数据-->将字符串转换为JavaScript代码
<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title>使用eval()</title></head><body> ????<!-- ????????eval()函数会计算或运行作为参数传递的内容 ??????例:var x = eval(4*3); //x=12 ????--> ????<script type="text/javascript"> ????????//JSON语法 "参数":"值" 的形式 ????????//参数不能是纯数字 ???????var user = ‘{"shiju1":"蛾儿雪柳黄金缕","shiju2":"笑语盈盈暗香去","shiju3":"众里寻他千百度"}‘; ???????//使用eval解析 ???????var myObject = eval(‘(‘+user+‘)‘); ???????//myObject可以使用参数句号形式访问值 ???????alert(myObject.shiju1); ????</script></body></html>
2)浏览器解析JSON语法
<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title>使用浏览器解析JSON</title></head><body> ???<!-- ????????某些浏览器会创建一个名为JSON的JavaScript对象来管理JSON的编码和解码.这个对象有两个方法 ???????stringify() ??parse() ????--> ????<script type="text/javascript"> ????????//JSON语句 "参数":"值" ????????var Mary =‘{"shici1":"众里寻他千百度","shici2":"蓦然回首","shici3":"那人却在灯火阑珊处"}‘; ????????//浏览器解析 ?返回的是数组 ????????var myObject = JSON.parse(Mary); ????????var result = ""; ????????//i对应参数 ????????for(i in myObject){ ????????????result += i + "="+myObject[i] +"\n"; ????????} ????????alert(result); ????</script></body></html>
<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title>JSON.stringify</title></head><body onload="jsonParse()"> ???<script type="text/javascript"> ???????function jsonParse(){ ???????????//将提示框的返回值作为被解析JSON语句 ???????????var inString = prompt("Enter JSON object"); ???????????var out = ""; ???????????//解析完的是一个数组 ???????????myobject = JSON.parse(inString); ???????????//遍历 ???????????//i对应参数 ???????????for(i in myobject){ ???????????????out +="JSON序列对:"+i+"="+myobject[i]+‘\n‘; ???????????} ???????????alert(out); ???????} ???</script></body></html>
3)stringify方法
<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title>stringify</title></head><body> ???<!-- ????????序列化:数据转换为便于通过网络进行存储和传输的形式 ???????稍后再回复为原始的格式 ????--> ???<script type="text/javascript"> ???????var Dan=new Object();//创建对象 ???????Dan.height=1.85; ???????Dan.age=18; ???????Dan.eyeColor="blue"; ???????alert(JSON.stringify(Dan)); ???</script></body></html>
4.JSON数据类型
每个 "参数":"值" 参数必须遵循一些简单的语法规则
1)不能是JavaScript保留的关键字
2)不能以数字开头
3)除了下划线与美元 不能包含任何特殊字符
每个值可以是以下一些数据类型
数值 字符型 布尔值 数组 对象 null(空)
注意:JavaScript有些数据类型不属于JSON标准,包括date error math function
5,JSON模拟关联数组
<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title>Document</title></head><body> ???<script type="text/javascript"> ???????var conference= ???????{ ???????????"startDay":"Monday", ???????????"nextDay":"Tuesday", ???????????"endDay":"wednesday" ???????} ???????alert(conference["endDay"]); ???????alert(conference.nextDay) ???????//conference["参数值"] ???????//等价于 ???????//conference.参数值 ???</script></body></html>
温馨小提示:JSON是独立于任何编程语言和平台的,很多编程语言如:java PHP c都含有JSON库和工具
6,使用JSON创建对象
1)属性
<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title>Document</title> ???</head><body> ???<!-- ????????1.Jason是另一种创建对象实例的方法 ???????2.json数据的表示方式成对的参数与值 ???????3.可以转换为字符串进行存储和转换 ????--> ????<script> ???????var jsonobject= ???????{ ???????????//参数和值的对应关系 ???????????"gushi1":"落花人独立", ???????????"gushi2":"微雨燕双飞" ???????} ???????alert(jsonobject.gushi1); ???</script></body></html>
2)方法
<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title>Document</title></head><body> ???<script type="text/javascript"> ???????var user= ???????{ ???????????"username":"phib1234", ???????????"location":"Spain", ???????????"height":"1.80", ???????????"setName":function(newName) ???????????{ ???????????????this.username=newName; ???????????} ???????} ???????var newName=prompt("Enter a new username"); ???????user.setName(newName); ???</script></body></html>
3)数组
<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title>Document</title></head><body> ???<script> ???????var bookListObject={ ???????"booklist":["Foundation", ???????"Dune", ???????"Q萌果子C", ???????"2001 A Space Odyssey", ???????"Stringer In A Stringe Land" ???????] ???????????} ???????var book=bookListObject.booklist[2]; ???????alert(book); ???</script></body></html>
4)对象
<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title>Understanding JSON</title> ???<script type="text/javascript"> ???????var bookListObject={ ???????????"booklist":[{"title":"Foundation","author":"Isaac Asimov"}, ???????????{"title":"Dune","author":"Frank Herbert"}, ???????????{"title":"Eon","author":"Greg Bear"}, ???????????{"title":"2001 A Space Odyssey","author":"Arthur C.Clarke"}, ???????????{"title":"Stranger","author":"Robert A.Heinlein"}] ???????????} ???????????????????????//保存用户消息的一个变量 ???????????var ?out=""; ???????????//获取数组 ???????????var ?books=bookListObject.booklist; ????????????//获取数组,一本一本地获取图书 ???????????for(var i=0;i<books.length;i++) ???????????{ ?????????????var booknumber=i+1;; ?????????????out+="Book"+booknumber+ ????????????????"is:‘"+books[i].title+ ????????????????"‘by"+books[i].author+ ????????????????"\n"; ???????????} ???????????</script></head><body onload="alert(out)"></body></html>
JSON
原文地址:https://www.cnblogs.com/zjm1999/p/10458724.html