分享

JSON介绍

 昵称8442 2009-08-01

JSON介绍

☆JSON介绍
     JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。(官方网站http://www.)


    ☆JSON语法
     JSON的语法很简单,就是使用大括号'{}',中括号'[]',逗号',',冒号':',双引号'“”'。数据类型:嵌套对象、数组、字符串、数字、布尔值或空值(来自官方网站http://www./json-zh.html)

     1)对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。

     2)数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。

     3)值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。

     4)字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。 字符串(string)与C或者Java的字符串非常相似。

     5)数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。

    ☆JSON优势
     1)简洁明了,操作方便(对比XML)
     JSON和XML都是基于文本的,两者都使用Unicode编码。JSON和XML都很容易阅读。主观上,JSON更清晰,冗余更少。XML适合标记文档(配置文件),JSON更适合数据交换。

     ☆JSON操作
     1)JSON字符串转换成JAVAScript对象(调用eval()[JSON本来就是JS的一个子集,所以可以使用JS的解释器])
Js代码 复制代码
  1. <script>   
  2.   var my_json='{"FBI":[{"name":"rose","age":"25"},{"name":"jack","age":"25"}],"NBA":[{"name":"tom","sex":"man"},{"name":"jack","sex":"women"}]}';   
  3.   var my_object=eval('('+my_json+')');   
  4.   document.writeln(my_object.FBI[1].name);   
  5. </script>  

Js代码 复制代码
  1.       
  2. 上面的代码也可省略属性的双引号,如下    
  3. <script>   
  4.   var my_json='{FBI:[{name:"rose",age:"25"},{name:"jack",age:"25"}],NBA:[{name:"tom",sex:"man"},{name:"jack",sex:"women"}]}';   
  5.   var my_object=eval('('+my_json+')');   
  6.   document.writeln(my_object.FBI[1].name);   
  7. </script>  


     2)将JS对象转换成JSON字符串(调用toJSONString,需要下载json.js[http://www./json.js])
Js代码 复制代码
  1. <script src="json.js"></script>   
  2. <script>   
  3. var my_object={   
  4.     FBI:[   
  5.     {name:"rose",age:"25"},   
  6.     {name:"jack",age:"25"}   
  7.     ],   
  8.     NBA:[   
  9.     {name:"tom",sex:"man"},   
  10.     {name:"jack",sex:"women"}   
  11.     ]   
  12. };   
  13. document.writeln(my_object.toJSONString());   
  14. </script>  

     3)XML与JSON转换(需要下载提供的JAVA类,json.zip[http://www./java/json.zip]),代码如下: JAVA实现XML与JSON之间的转换
Java代码 复制代码
  1. package woxingwosu;   
  2.   
  3. import java.io.BufferedReader;   
  4. import java.io.BufferedWriter;   
  5. import java.io.FileReader;   
  6. import java.io.FileWriter;   
  7.   
  8. import org.json.JSONObject;   
  9. import org.json.XML;   
  10.   
  11. public class XMl2JSON {   
  12.   
  13.   
  14.     public static void main(String[] args) {   
  15.         BufferedReader buffRed=null;   
  16.         BufferedWriter buffWri=null;   
  17.         try{   
  18.             //将XML转换成JSON   
  19.             String fileName1="woxingwosu.xml";   
  20.             buffRed=new BufferedReader(new FileReader(fileName1));   
  21.             String tempStr;   
  22.             StringBuffer xmlStrBuff=new StringBuffer();   
  23.             while((tempStr=buffRed.readLine())!=null)   
  24.                 xmlStrBuff.append(tempStr);   
  25.             System.out.println("JSON str="+XML.toJSONObject(xmlStrBuff.toString()));   
  26.                
  27.             //将JSON转换成XML   
  28.             String jsonStr="{Heros:{FBI:[{name:\"rose\",age:\"25\"},{name:\"jack\",age:\"25\"}],NBA:[{name:\"tom\",sex:\"man\"},{name:\"jack\",sex:\"women\"}]}};";   
  29.             String fileName2="myxml.xml";   
  30.             buffWri=new BufferedWriter(new FileWriter(fileName2));   
  31.             JSONObject jsonObj=new JSONObject(jsonStr);   
  32.             buffWri.write("<?xml version=\"1.0\" encoding=\"GBK\"?>");   
  33.             buffWri.newLine();   
  34.             buffWri.write("<!DOCTYPE properties SYSTEM \"http://java./dtd/properties.dtd\">");   
  35.             buffWri.newLine();   
  36.             buffWri.write(XML.toString(jsonObj));   
  37.             buffWri.flush();   
  38.                
  39.             System.out.println("run end!");   
  40.         }catch(Exception e){   
  41.             e.printStackTrace();   
  42.         }finally{   
  43.             try{   
  44.                 if(buffRed!=null)   
  45.                     buffRed.close();   
  46.                 if(buffWri!=null)   
  47.                     buffWri.close();   
  48.             }catch(Exception e){   
  49.                 e.printStackTrace();   
  50.             }   
  51.         }   
  52.     }   
  53. }  


woxingwosu.xml
Xml代码 复制代码
  1. <?xml version="1.0" encoding="GBK"?>    
  2. <!DOCTYPE properties SYSTEM "http://java./dtd/properties.dtd">    
  3. <properties>    
  4. <entry key="no">woxingwosu</entry>    
  5. <entry key="name">我行我素</entry>    
  6. </properties> 输出结果: xml2json结果   
  7. JSON str={"properties":{"entry":[{"key":"no","content":"woxingwosu"},{"key":"name","content":"我行我素"}]}}json2xml结果   
  8. <?xml version="1.0" encoding="GBK"?>  
  9. <!DOCTYPE properties SYSTEM "http://java./dtd/properties.dtd">  
  10. <Heros><NBA><sex>man</sex><name>tom</name></NBA><NBA><sex>women</sex><name>jack</name></NBA><FBI><age>25</age><name>rose</name></FBI><FBI><age>25</age><name>jack</name></FBI></Heros>  


    4)AJAX中运用JSON(比使用DOM解析XML简单) 一个在AJAX中运用JSON的简单例子
  在响应的程序中输入返回的值:

  out.println("{FBI:[{name:\"rose\",age:\"25\"},{name:\"jack\",age:\"25\"}],NBA:[{name:\"tom\",sex:\"man\"},{name:\"jack\",sex:\"women\"}]}");
  在页面上(点确定页面上会显示jack)
Js代码 复制代码
  1. <script language="javascript" src="js/prototype.js"></script>   
  2. <input type="button" onclick="loadInfo()" value="确定"/>   
  3. <script>   
  4. function loadInfo(){   
  5.     new Ajax.Request("hello",{   
  6.             onComplete:function(req){   
  7.                 var res=eval("("+req.responseText+")");   
  8.                 $('mydiv').innerHTML=res.FBI[1].name;   
  9.             }   
  10.         }   
  11.     );   
  12. }   
  13. </script>   
  14. <div id="mydiv"></div>  


    4)Java中运用Json(需要下载json的java开发包) Java中运用Json
Java代码 复制代码
  1. package callCenterServer;   
  2.   
  3. import java.util.ArrayList;   
  4. import org.json.JSONArray;   
  5. import org.json.JSONObject;   
  6.   
  7.   
  8. public class Test {   
  9.   
  10.     /**  
  11.      * @param args  
  12.      */  
  13.     public static void main(String[] args) throws Exception{   
  14.         ArrayList<Area> areas=new ArrayList<Area>();   
  15.         areas.add(new Test.Area("福建","福州"));   
  16.         areas.add(new Test.Area("福建","厦门"));   
  17.         areas.add(new Test.Area("福建","泉州"));   
  18.         areas.add(new Test.Area("四川","成都"));   
  19.         areas.add(new Test.Area("四川","攀枝花"));   
  20.         JSONObject jsonObject=new JSONObject();   
  21.         for(Test.Area area:areas){   
  22.             if(jsonObject.has(area.province)){   
  23.                 JSONArray jsonArray=(JSONArray)jsonObject.get(area.province);   
  24.                 jsonArray.put(area.city);   
  25.             }else{   
  26.                 JSONArray jsonArray=new JSONArray();   
  27.                 jsonArray.put(area.city);   
  28.                 jsonObject.put(area.province, jsonArray);   
  29.             }   
  30.         }   
  31.         System.out.println(jsonObject);   
  32.     }   
  33.        
  34.     static class Area{   
  35.         private final String province;   
  36.         private final String city;   
  37.         Area(String province,String city){   
  38.             this.province=province;   
  39.             this.city=city;   
  40.         }   
  41.     }   
  42.        
  43. }  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多