JSON就是这么简单

简介: 讲解JSON


什么是JSON


JSON:JavaScript Object Notation 【JavaScript 对象表示法】

JSON 是存储和交换文本信息的语法。类似 XML。

JSON采用完全独立于任何程序语言的文本格式,使JSON成为理想的数据交换语言。



为什么需要JSON


提到JSON,我们就应该和XML来进行对比。XML也是一种存储和交换文本信息的手段。那么JSON好在哪里呢??

JSON 比 XML 更小、更快,更易解析

  • javaScript原生支持JSON,解析速度会很快
  • XML解析成DOM对象的时候,浏览器【IE和fireFox】会有差异
  • 使用JSON会更简单

5.jpg

更加容易创建JavaScript对象

varp={'city':['北京','上海','广州','深圳']};

for(vari=0;i<p.city.length;i++){

   document.write(p.city[i]+"<br/>");

}



JSON语法


客户端与服务端的交互数据无非就是两种

  • 数组
  • 对象

于是乎,JSON所表示的数据要么就是对象,要么就是数据

JSON语法是javaScript语法的子集,javaScript用[]中括号来表示数组,用{}大括号来表示对象,JSON亦是如此


JSON数组:


varemployees=[

   {"firstName":"Bill","lastName":"Gates"},

   {"firstName":"George","lastName":"Bush"},

   {"firstName":"Thomas","lastName":"Carter"}

   ];




JSON对象


varobj={


           age:20,

           str:"zhongfucheng",

           method:function(){

               alert("我爱学习");

           }


       };

当然啦,数组可以包含对象,在对象中也可以包含数组



解析JSON


javaScript原生支持JSON的,我们可以使用eval()函数来解析JSON,把JSON文本数据转换成一个JavaScript对象。

functiontest(){

           //在写JOSN的时候,记得把带上逗号

           vartxt="{a:123,"+

                   "b:'zhongfucheng'}";


           //使用eval解析JSON字符串,需要增添()

           varaa=eval("("+txt+")");

           alert(aa);


       }


效果


7.jpg


不用框架时将JavaBean转成JSON


  • 使用Strus2的时候,Struts2自带了组件能够让JavaBean对象、集合转成是JSON,不用我们自己拼接...这是非常方便的。
  • 使用SpringMVC的时候,SpringMVC也支持将JavaBean转成JSON

但是,我们不一定使用框架来做开发呀。因此,我们还得学习使用第三方库来将JavaBean对象、集合转成JSON


导入开发包

  • commons-io-2.0.1.jar
  • commons-lang-2.5.jar
  • commons-collections-3.1.jar
  • commons-beanutils-1.7.0.jar
  • ezmorph-1.0.3.jar
  • json-lib-2.1-jdk15.jar



事例代码

packagecn.itcast.javaee.js.bean2json;


importnet.sf.json.JSONArray;


importjava.util.*;


/**

* 使用第三方工具,将JavaBean对象/List或Set或Map对象转成JSON

* @author AdminTC

*/

publicclassTestBean2Json{

   privatestaticvoidjavabean2json(){

       Citycity=newCity(1,"广州");

       JSONArrayjSONArray=JSONArray.fromObject(city);

       StringjsonJAVA=jSONArray.toString();

       System.out.println(jsonJAVA);

       //[{"id":1,"name":"广州"}]

   }

   privatestaticvoidlist2json(){

       List<City>cityList=newArrayList<City>();

       cityList.add(newCity(1,"广州"));

       cityList.add(newCity(2,"珠海"));

       JSONArrayjSONArray=JSONArray.fromObject(cityList);

       StringjsonJAVA=jSONArray.toString();

       System.out.println(jsonJAVA);

       //[{"id":1,"name":"广州"},{"id":2,"name":"珠海"}]

   }

   privatestaticvoidset2json(){

       Set<City>citySet=newLinkedHashSet<City>();

       citySet.add(newCity(1,"广州"));

       citySet.add(newCity(2,"珠海"));

       JSONArrayjSONArray=JSONArray.fromObject(citySet);

       StringjsonJAVA=jSONArray.toString();

       System.out.println(jsonJAVA);

       //[{"id":1,"name":"广州"},{"id":2,"name":"珠海"}]

   }

   privatestaticvoidjavabeanlist2json(){

       List<City>cityList=newArrayList<City>();

       cityList.add(newCity(1,"中山"));

       cityList.add(newCity(2,"佛山"));

       Provinceprovince=newProvince(1,"广东",cityList);

       

       JSONArrayjSONArray=JSONArray.fromObject(province);

       StringjsonJAVA=jSONArray.toString();

       System.out.println(jsonJAVA);

       /*

         [

            {

             "id":1,

             "name":"广东"

             "cityList":[{"id":1,"name":"中山"},{"id":2,"name":"佛山"}],

            }

         ]

         */

   }

   privatestaticvoidmap2json(){

       

       List<City>cityList=newArrayList<City>();

       cityList.add(newCity(1,"中山"));

       cityList.add(newCity(2,"佛山"));

       

       Map<String,Object>map=newLinkedHashMap<String,Object>();

       map.put("total",cityList.size());//表示集合的长度

       map.put("rows",cityList);//rows表示集合

       

       JSONArrayjSONArray=JSONArray.fromObject(map);

       StringjsonJAVA=jSONArray.toString();

       System.out.println(jsonJAVA);

       //[{"total":2,"rows":[{"id":1,"name":"中山"},{"id":2,"name":"佛山"}]}]

       

       jsonJAVA=jsonJAVA.substring(1,jsonJAVA.length()-1);

       System.out.println(jsonJAVA);

   }

   

}


把要解析成JSON 的javaBena对象、集合放进下面这段代码即可!

JSONArrayjSONArray=JSONArray.fromObject(map);

无论放进去什么,返回的都是数组


总结




6.jpg

目录
相关文章
|
3月前
|
JSON 前端开发 JavaScript
JSON 必知必会
JSON 必知必会
N..
|
25天前
|
存储 JSON 前端开发
JSON
JSON
N..
16 1
|
1月前
|
存储 JSON JavaScript
JSON应用
JSON应用
28 4
|
3月前
C++Json生成
C++Json生成
23 0
|
4月前
|
JSON 前端开发 JavaScript
JSON小技巧
JSON小技巧
25 0
|
8月前
|
JSON fastjson Java
JSON小记
JSON小记
|
10月前
|
XML JSON JavaScript
json
json
50 0
|
10月前
|
JSON 数据格式
json的一些小理解
个人学习总结
59 0
|
12月前
|
JSON JavaScript 前端开发
什么是 JSON?
什么是 JSON?
76 0
|
XML 存储 JSON
JSON介绍
JSON介绍
248 0
JSON介绍