Json.docx
- 文档编号:24206551
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:13
- 大小:69.22KB
Json.docx
《Json.docx》由会员分享,可在线阅读,更多相关《Json.docx(13页珍藏版)》请在冰豆网上搜索。
Json
第一章介绍JSON和语法
JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。
易于人阅读和编写。
同时也易于机器解析和生成。
它基于JavaScriptProgrammingLanguage,StandardECMA-2623rdEdition-December1999(信息标准化和通信系统(由netscpace公司BrendanEich提出,本标准在1999年11月被ECMAGeneralAssembly接受采纳为ECMA-262第3版。
))的一个子集。
JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C,C++,C#,Java,JavaScript,Perl,Python等)。
这些特性使JSON成为理想的数据交换语言。
JSON建构于两种结构:
{name:
”小花”}对象
∙“名称/值”对的集合(Acollectionofname/valuepairs)。
不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hashtable),有键列表(keyedlist),或者关联数组(associativearray)。
∙值的有序列表(Anorderedlistofvalues)。
在大部分语言中,它被理解为数组(array)。
[“aa”,”bb”]
[{name:
”小花”},{name:
”小花”},{name:
”小花”}]
这些都是常见的数据结构。
事实上大部分现代计算机语言都以某种形式支持它们。
这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
JSON具有以下这些形式:
对象是一个无序的“‘名称/值’对”集合。
一个对象以“{”(左括号)开始,“}”(右括号)结束。
每个“名称”后跟一个“:
”(冒号);“‘名称/值’对”之间使用“,”(逗号)分隔。
{name:
‘aa’}
示例:
varob={name:
”小花”,age:
23}
数组是值(value)的有序集合。
一个数组以“[”(左中括号)开始,“]”(右中括号)结束。
值之间使用“,”(逗号)分隔。
vararr=[“aa”,”bb”,”cc”]
值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、null、对象(object)或者数组(array)。
这些结构可以嵌套。
vararr=[“小花”,”小白”];
vararr1=[];
字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。
一个字符(character)即一个单独的字符串(characterstring)。
字符串(string)与C或者Java的字符串非常相似。
数值(number)也与C或者Java的数值非常相似。
除去未曾使用的八进制与十六进制格式。
除去一些编码细节。
第二章JS解析JSON
一、JSON2解析JSON
1.访问JSON对象中的成员我们可以如下使用:
test1.js
varmyJSONObject={"students":
[
{"stId":
"001","stName":
"小花","stAge":
"23"},
{"stId":
"002","stName":
"小红","stAge":
"24"}
]
};
alert(myJSONObject.students.[0].stName);
2.用eval()方法把JSON字符串转化成JSON对象.
把JSON字符串转化成JSON对象,可以使用eval()函数。
test2.js
varmyObject=eval('({"name":
"ss"})');
alert(myObject.name);//结果ss
eval()函数的速度很快,但是由于它能编译和解析任何JS程序,所以它的安全性不高,如果要求安全性,可以使用JSON的parser。
3.使用JSON2中的JSON对象的parser()方法解析JSON字符串
http:
//www.json.org/json2.js下载json2.js
test3.js
varstr='{"name":
"fendouer","age":
23}';
varob=JSON.parse(str) ;
alert(ob.name)
4.使用JSON2中的JSON对象的stringify()方法把JSON对象转换成字符串
varjson={"name":
"fendouer","age":
23};
varstr=JSON.stringify(str) ;
alert(str)
第三章JAVA中使用JSON
一、使用json-lib-2.3把Java对象转换成JSON对象
在java程序中通常会用到JSON格式作为格式化数据传输,json-lib-2.3是一个转换数据的工具。
下载地址是:
。
在其网站上可以下载源代码json-lib-2.3-jdk15-sources.jar包、json-lib-2.3-jdk15-javadoc.jar文档包、json-lib-2.3-jdk15.jar核心包。
将其下载下来放入项目的classpath下。
在使用json-lib-2.3包时还要其它的依赖包:
如下图:
JSONTest.java
packagecom.fendou;
importjava.util.HashMap;
importjava.util.Map;
importnet.sf.json.JSONArray;
importnet.sf.json.JSONFunction;
importnet.sf.json.JSONObject;
importnet.sf.json.JSONSerializer;
publicclassJSONTest{
publicstaticvoidmain(String[]args){
JSONTesttt=newJSONTest();
tt.formatJSONOBject()
//tt.formatJSONArray();
//tt.formatJSONMap();
}
publicvoidformatJSONOBject(){
JSONObjectobj=newJSONObject();
obj.put("name","foo");
obj.put("num",newInteger(100));
obj.put("balance",newDouble(1000.21));
obj.put("is_vip",newBoolean(true));
obj.put("nickname",null);
System.out.print(obj);
}
publicvoidformatJSONArray(){
JSONArrayja=newJSONArray();
Personperson=newPerson();
person.setId
(1);
person.setName("linla");
ja.add(person);
System.out.print(ja);
}
publicvoidformatJSONMap(){
Map
Personperson=newPerson();
person.setId
(1);
person.setName("linla");
map.put("t1",person);
JSONArrayja=newJSONArray();
ja.element(map);
System.out.println(ja);
}
}
第四章在AJAX中使用JSON
一、通过ajax后台向前台传递JSON格式数据
Json.java
packagecom.fendou;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.util.HashMap;
importjava.util.Map;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importnet.sf.json.JSONArray;
importnet.sf.json.JSONFunction;
importnet.sf.json.JSONObject;
publicclassJsonextendsHttpServlet{
@Override
protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
doPost(req,resp);
}
@Override
protectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
PrintWriterout=resp.getWriter();
resp.setContentType("application/x-json");
//对象
/*JSONObjectjob=newJSONObject();
job.put("name","cc");
out.print(job);*/
//数组
/*JSONArrayja=newJSONArray();
Personperson=newPerson();
person.setId
(1);
person.setName("linla");
ja.add(person);
out.print(ja);*/
//map集合
/*Map
Personperson=newPerson();
person.setId
(1);
person.setName("linla");
map.put("t1",person);
JSONArrayja=newJSONArray();
ja.element(map);
out.print(ja);*/
out.flush();
out.close();
}
}
Web.xml文件
xmlversion="1.0"encoding="UTF-8"?
>
xmlns=" xmlns: xsi="http: //www.w3.org/2001/XMLSchema-instance" xsi: schemaLocation=" 前台页面: 动人 test.jsp <%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8" contentType="text/html;charset=utf-8"%> DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
-- varproAjax={ xmlHttpreq: false, createXMLHttpReq: function(){ if(window.XMLHttpRequest){ //Mozilla xmlHttpreq=newXMLHttpRequest(); }else{ //IE if(window.ActiveXObject){ try{//比较新的版本 xmlHttpreq=newActiveXObject("Msxml2.XMLHttp"); }catch(e){ try{//失败就创建比较老的版本 xmlHttpreq=newActiveXObject("Microsoft.XMLHttp"); }catch(e){//还失败就回家种田 } } } } }, sendreq: function(val){ url="Json"; proAjax.createXMLHttpReq(); xmlHttpreq.onreadystatechange=proAjax.handleResponse; xmlHttpreq.open("GET",url,true); xmlHttpreq.send(null); }, handleResponse: function(){ //判断XHR的状态 if(xmlHttpreq.readyState==4){ alert(xmlHttpreq.readyState); //回应的状态=200,表示成功返回了服务器的东东 if(xmlHttpreq.status==200){ alert(xmlHttpreq.status); //得到从服务端传回来的Text对象 varstr=xmlHttpreq.responseText; varob=eval(str); alert(ob); //varmyObject=JSON.parse(str); alert(myObject); } } }, addEvent: function(elm,evType,fn,useCapture){ if(elm.addEventListener){ elm.addEventListener(evType,fn,useCapture); returntrue; }elseif(elm.attachEvent){ varr=elm.attachEvent('on'+evType,fn); returnr; }else{ elm['on'+evType]=fn; } }, init: function(){ varvl=document.getElementsByName("vl")[0]; proAjax.addEvent(vl,'click',proAjax.tt,false); }, execute: function(){ varvl=document.getElementsByName("vl")[0]; proAjax.sendreq(name); } } proAjax.addEvent(window,'load',proAjax.init,false); -->
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Json