• JSON


    JSON对象

      JSON(JavaScript Object  Notation)一种简单的数据格式,比xml更轻巧。JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的API或工具包。 

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

     

      规则如下:

       1)映射用冒号(“:”)表示。名称:值

           2)并列的数据之间用逗号(“,”)分隔。名称1:值1,名称2:值2

           3) 映射的集合(对象)用大括号(“{}”)表示。{名称1:值1,名称2:值2}

           4) 并列数据的集合(数组)用方括号(“[]”)表示。

             [

               {名称1:,名称2:2},

               {名称1:,名称2:2}

             ]

          5)  元素值可具有的类型:string, number, object, array, true, false, null 

    JSON 示例

      JSON 用冒号(而不是等号)来赋值。每一条赋值语句用逗号分开。整个对象用大括号封装起来。可用大括号分级嵌套数据。

      对象描述中存储的数据可以是字符串,数字或者布尔值。对象描述也可存储函数,那就是对象的方法。

    1、传统方法和JSON比较

     1 <script type="text/javascript">
     2               //2、使用json格式来定义对象
     3             var p ={
     4                 "id":1118,
     5                 name:"小胜",//这里值的双引号不能省略,而键的双引号可以省略
     6                 gender:"男"
     7             }
     8             alert(p.id+p.name+p.gender);
     9             
    10             
    11             /*//1、传统方式下js定义类
    12             function person(id,name,gender){
    13                 this.id = id;
    14                 this.name = name;
    15                 this.gender = gender;
    16             }
    17             //传统方式下定义对象
    18             var p0 = new person(18,"hacket","男");
    19             //显示该用户信息
    20             alert(p0.id+p0.name+p0.gender);*/
    21           </script>

    2、多个json对象建立

     1 <script type="text/javascript">
     2                   var p =[//1、定义多个对象,用[]方括号,多个对象之间用逗号(,)隔开,最后一个不用逗号
     3                     
     4                     {id:1,name:"hacket1",gender:"男1"},
     5                     {id:2,name:"hacket2",gender:"男2"},
     6                     {id:3,name:"hacket3",gender:"男3"}
     7                 ]
     8                   for(var i=0;i<p.length;i++){//2、通过p[i].id来调用某一个对象的值
     9                     window.alert(p[i].id+":"+p[i].name+":"+p[i].gender);
    10                 }
    11           </script>

    3、一个对象中有1个对象有多个对象

    1                 var p = {
    2                     "province":[
    3                         {"city":"广州"},
    4                         {city:"佛山"},
    5                         {city:"江门"}
    6                     ]
    7                 };
    8                 alert("我去过:"+p.province[2].city);

    4、一个对象中有多个对象有多个对象

     1                 var p = {
     2                     "province1":[
     3                         {city:"长沙"},
     4                         {city:"衡阳"},
     5                         {city:"永州"}
     6                     ],
     7                     "province2":[
     8                         {city:"广州"},
     9                         {city:"江门"},
    10                         {city:"深圳"}
    11                     ]    
    12                 };
    13                   alert(p.province1[1].city);
    14                 alert(p.province2[1].city);

    5、精简版

    1                 var p = {
    2                     "province":["广州","深圳","佛山"]
    3                 }    
    4                 alert(p.province.length);
    5                 alert(p.province[1]);

    总结:

    数值型、布尔型和key不需要双引号,值需要双引号
    一个大括号{}代表一个对象,多个对象用[]括号

    解析 JSON

    JSON 只是一种文本字符串。它被存储在 responseText 属性中
    为了读取存储在 responseText 属性中的 JSON 数据,需要根据 JavaScript 的 eval 函数。
    函数 eval 会把一个字符串当作它的参数。然后这个字符串会被当作 JavaScript 代码来执行。因为 JSON 的字符串就是由 JavaScript 代码构成的,所以它本身是可执行的
    代码实例:

    使用第三方工具解析 JSON

     1 import java.util.ArrayList;
     2 import java.util.List;
     3 
     4 import net.sf.json.JSONArray;
     5 import net.sf.json.JsonConfig;
     6 import cn.itcast.web.ajax.domain.Province;
     7 
     8 //使用第三方工具将JavaBean或集合转成Json字符串
     9 public class TestJson {
    10     public static void main(String[] args) {
    11         
    12         Province p1 = new Province(1,"广东省");
    13         Province p2 = new Province(1,"湖南省");
    14         Province p3 = new Province(1,"广西省");
    15         List<Province> provinceList = new ArrayList<Province>();
    16         provinceList.add(p1);
    17         provinceList.add(p2);
    18         provinceList.add(p3);
    19         
    20         JsonConfig jsonConfig = new JsonConfig();
    21         //设置JavaBean在转换成JSON字符串时,不包含id属性
    22         jsonConfig.setExcludes(new String[]{"id"});
    23         //通过JavaBean对象创建JSONArray对象
    24         JSONArray jsonArray = JSONArray.fromObject(provinceList,jsonConfig);
    25         //将JavaBean对象转成JSON格式字符串
    26         String jsonString = jsonArray.toString();
    27         //显示
    28         System.out.println(jsonString);
    29     }
    30 }
     1 //省份[JavaBean]
     2 public class Province {
     3     private int id;
     4     private String name;
     5     public Province(){}
     6     public Province(int id, String name) {
     7         this.id = id;
     8         this.name = name;
     9     }
    10     public int getId() {
    11         return id;
    12     }
    13     public void setId(int id) {
    14         this.id = id;
    15     }
    16     public String getName() {
    17         return name;
    18     }
    19     public void setName(String name) {
    20         this.name = name;
    21     }
    22 }
  • 相关阅读:
    .Net中的设计模式——Decorator模式
    PetShop的系统架构设计
    PetShop数据访问层之消息处理
    对象的封装与C#的类
    Flash/Flex学习笔记(46):正向运动学
    Flash/Flex学习笔记(43):动量守恒与能量守恒
    win7下恢复“经典任务栏”/“快速启动栏”,关闭“窗口自动最大化”
    Flash/Flex学习笔记(50):3D线条与填充
    图片的javascript延时加载
    Flash/Flex学习笔记(51):3维旋转与透视变换(PerspectiveProjection)
  • 原文地址:https://www.cnblogs.com/hacket/p/3067744.html
Copyright © 2020-2023  润新知