JSON对象学习

Json对象学习

JSON对象 :  JavaScript 对象表示法


一、定义格式;

var 对象名 = {
           属性名:属性值,
           属性名:属性值,
           .........
        }

   *  JSON 是存储和交换文本信息的语法,类比与xml, 进行数据的传输
   JSON 比 XML 更小、更快,更易解析
   ● JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 JavaScript 对象。
  
 

二、JSON的语法

1、基本规则:
    * 数据以键值对的方式进行存储: json数据是由键值对构成的
        * 键用引号(单双都行)引起来,也可以不使用引号
        * 值的取值类型
            (1)数字(整数或浮点数)
            (2)字符串
            (3)逻辑值(true 或 false)
            (4)数组(在方括号中)  [ {} ,{}, {} ]
            (5)对象(在花括号中)  { }
            (6)null
        * 数据之间由逗号分隔,多个键值对用逗号分隔
        * 花括号保存对象:使用{}定义json格式
        * 方括号保存数组:[]
        

● 2、获取数据
    (1)json对象.键名
    (2)json对象["键名"]    
    (3)json对象[索引]                     //获取到当前的数组对象object,再使用 .键名  , 获取具体值
  

3、获取对象中的所有键和值
    * 例如:
            var person = {"name":"caddo",age:21,'gebder':true};

 

* 使用 for  in 循环
for(var key in person) {
	//这样的方式获取不到因为此方式相当于: person."name"
	//alert(key+":"+person.key);   (错误格式)	
	
        alert(key+":"+person[key]);    (正确格式)
}

● 4、JSON数据和java对象的相互转换
    * JSON解析器
        * 常见的解析器:   jsonlib, Gson , fastjson
 
    (1)JSON转换为java对象  (使用jackson架包转换)
        * 使用步骤:
                (1)导入jackson的相关jar包
                (2)创建json对象
                    * 自动转译“”号
                    * String json = "{\"name\": \"caddo\",\"age\":21 ,\"gender\": \"女\" }";
                (3)创建jackson的核心对象
                (4)转换:
                    * 转换方法:
                    readValue(参数,class对象)
                      参数:
                        json对象
                        class对象:  代表要转的对象的clss对象
                
                    * 结果:
                     Person{name='张三',age=21, gender='男'};
                                    
                                    
    
    (2)java对象转换为JSON对象  (使用jackson架包转换)
        * 使用步骤:
                (1)导入jackson的相关jar包
                (2)创建java对象
                (3)创建jackson的核心对象, ObjectWapper mapper = new ObjectWapper();
                (4)转换:
                      * 转换方法:
                       wirteValue(参数,obj)
                                 参数:
                            file:   将obj对象转换为json字符串对象,并且保存在文件中
                            writer: 将obj对象转换为json字符串对象,并且写入到字符输出流中
                           OutPutStream:  将obj对象转换为json字符串对象,并且写入到字节输出流中
                                        
                        writeValueAsString:  将对象转换为json字符串
                                  * 注解:
                          @JsonIgnore: 排除属性(忽略该属性,也就是转成json字符串不会出现对应的键值对)
                          @JsonFormat: 属性值格式化
                          @JsonFormat(pattern="yyyy-MM-dd");
                                
        * 复杂的java对象转换
             ● List集合 :   数组
                    * 转换后的格式:
                     [{},{},{}];
                        
                    * 每一个{} 代表的是一个对象,或者字符串
            
             ● Map集合
                    * 转换后的格式:
                    {"键名1":"键值1" ,"键名2":"键值2" ,"键名3":"键值3" };
                        
                    * 转换后的数据键是无序的,与集合初始添加的顺序是不一致的
    

● 5、定义JSON格式案列

 

//1、定义基本格式
var person = {"name":"caddo",age:21,'gebder':true};
//alert(person); //结果: [object Object]

var name = person.name;
alert(name);   //结果: caddo

//获取person对象的所有键和值,使用for in 循环 ,key是一个关键字
for(var key in person) {
	alert(key+":"+person[key]);
}
//2、嵌套格式{} ——-》 []   键: persons , 值:保存的是数组对象
var persons = {"persons":[
	         {"name":"caddo",age:21,'gender':true} ,
	         {"name":"elina",age:21,'gender':false},
	         {"name":"sea",age:22,'gender':true}
	     ] };

//alert(persons);   // 结果 : [object Object]

var name1 = persons.persons[1].name;
alert(name1);    //结果:elina
//3、嵌套格式  [] ----> {}   
var ps = [ {"name":"caddo",age:21,'gender':true} ,
              {"name":"elina",age:21,'gender':false},
              {"name":"sea",age:22,'gender':true} ]

//alert(ps);   // 结果[object Object],[object Object],[object Object]

var gender = ps[0].gender;
alert(gender);  // 结果: true

● 6、JSON与java对象之间的转换案例
    * 服务器端响应的数据:在客户端使用时,要想当成json数据格式使用
        (1)$.get(type) : 将最后一个参数type指定为"json"
        (2)在服务器端设置MIME类型
            response.setContentType("application/json;charset=utf-8")
        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值