JSON

JSON

一、概念

JSON(JavaScript Object Notation, JS 对象简谱) ,是一种轻量级的数据交换格式。采用完全独立于编程语言的文本格式来存储和表示数据。

json用于存储和交换数据
json比xml更小、更快、更易解析

二、语法

2.1 规则

1.数据由键值对组成
	键:由单引号或者双引号扩起来(也可以不用引号)
	值:类型
		a.字符串 {"name":"zxx"}
		b.数值 {"age":42}
		c.布尔值 {"gender":true}
		d.json对象 {"location":{"区":"静安区","路":"纱帽路"}}
		e.json数组 {"emps":[{},{},{}]}
		f.null
2.键值对用冒号组成,多个键值对由逗号分隔
3.json对象:{}
4.json数组:[]

2.2 定义格式

1.
{键1:值1,健2:值2,...}
2.
{键1:[{},{},{}],键2:[{},{}]}
3.
[{},{},{}]

2.3 获取方式

1.json对象.键
2.json对象["键"]
3.数组对象[下标]

2.4 遍历方式

for(var key in json对象){
	alert(key+"---"+json对象[key])
}

例子如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script>
       /* var emp = {"id":"A01","name":"wlh","age":40,"sex":false};
        for(var key in emp){
            //alert(key+"---"+emp.key);//不行
            alert(key+"---"+emp[key]);
        }*/

       /*var es = [
            {"id":"A01","name":"wlh","age":41,"sex":false},
            {"id":"A02","name":"pwb","age":42,"sex":true},
            {"id":"A03","name":"tjj","age":43,"sex":false}
        ];
        for(var i = 0 ;i < es.length; i++){
            for(var key in es[i]){
                alert(key+"---"+es[i][key]);
            }
        }*/

        var emps = {"emps":[
                {"id":"B01","name":"wlh","age":21,"sex":false},
                {"id":"B02","name":"pwb","age":22,"sex":true},
                {"id":"B03","name":"tjj","age":23,"sex":false}
            ]};
        for(var i = 0;i < emps.emps.length;i++){
            for(var key in emps.emps[i]){
                alert(key+"  :  "+emps.emps[i][key]);
            }
        }

    </script>
</head>
<body>


</body>
</html>

三、JSON数据和Java对象的转换

json解析器:Jackson、Gson、Jsonlib

3.1 使用Jackson解析

3.1.2 Jackson使用步骤

1.导入相关jar包
2.创建核心类对象ObjectMapper
3.实现解析
	a.java->json
		writeValueAsString(Object):将java对象转换成json字符串
		writeValue(参数1,参数2):
			参数1:
				File:将obj对象转换成json字符串,并写入指定的文件中
				Writer:将obj对象转换成json字符串,并封装到字符输出流中
				OutputStream:将obj对象转换成json字符串,并封装到字节输出流中
			参数2:Object
			
例子如下:
@Test
public void test1() throws Exception {

    Emp e = new Emp("zs",33,new Date(),false);

    ObjectMapper mapper = new ObjectMapper();
    String json = mapper.writeValueAsString(e);
    System.out.println(json);

    /*mapper.writeValue(new File("C:\\mine\\Java\\a.txt"),e);
    mapper.writeValue(new FileWriter("C:\\mine\\Java\\b.txt"),e);
    mapper.writeValue(new FileOutputStream("C:\\mine\\Java\\c.txt"),e);*/
}

@Test-list集合
public void test2() throws Exception {
    Emp e1 = new Emp("zs",31,new Date(),false);
    Emp e2 = new Emp("ls",32,new Date(),true);
    Emp e3 = new Emp("ws",33,new Date(),false);

    List<Emp> emps = new ArrayList<>();
    emps.add(e1);
    emps.add(e2);
    emps.add(e3);

    ObjectMapper mapper = new ObjectMapper();
    String json = mapper.writeValueAsString(emps);
    System.out.println(json);
}

@Test-map集合
public void test3() throws Exception {
    Emp e1 = new Emp("zs",31,new Date(),false);
    Emp e2 = new Emp("ls",32,new Date(),true);
    Emp e3 = new Emp("ws",33,new Date(),false);

    Map<String,Emp> map = new HashMap<>();
    map.put("a",e1);
    map.put("b",e2);
    map.put("c",e3);

    ObjectMapper mapper = new ObjectMapper();
    String json = mapper.writeValueAsString(map);
    System.out.println(json);
}

	  注解:
		(1)JsonIgnore:使属性不被解析成json数据
		(2)JsonFormat:属性格式化
	b.json->java
		readValue(参数1,参数2)
			参数1:json字符串
			参数2:.class
			
例子如下:		
@Test
public void test4() throws Exception {

    String json = "{\"name\":\"李逵\",\"age\":41}";

    ObjectMapper mapper = new ObjectMapper();
    Emp e = mapper.readValue(json,Emp.class);
    System.out.println(e);

}

3.2 使用Jsonlib解析

JSONObject.fromObject(obj)例子如下:
@Test
public void test5(){
    Emp e = new Emp("zs",31,new Date(),false);
    JSONObject obj = JSONObject.fromObject(e);
    String json = obj.toString();
    System.out.println(json);
}


JSONArray.fromObject(obj)例子如下:
@Test
public void test6(){
    Emp e1 = new Emp("zs",31,new Date(),false);
    Emp e2 = new Emp("ls",32,new Date(),true);
    Emp e3 = new Emp("ws",33,new Date(),false);

    List<Emp> emps = new ArrayList<>();
    emps.add(e1);
    emps.add(e2);
    emps.add(e3);

    String json = JSONArray.fromObject(emps).toString();
    System.out.println(json);
}

3.3 使用Gson解析

toJson(obj)例子如下:
@Test
public void test7(){
    Emp e = new Emp("zs",31,new Date(),false);
    Gson g = new Gson();
    String json = g.toJson(e);
    System.out.println(json);
}

@Test
public void test8(){
    Emp e1 = new Emp("zs",31,new Date(),false);
    Emp e2 = new Emp("ls",32,new Date(),true);
    Emp e3 = new Emp("ws",33,new Date(),false);

    List<Emp> emps = new ArrayList<>();
    emps.add(e1);
    emps.add(e2);
    emps.add(e3);

    Gson g = new Gson();
    String json = g.toJson(emps);
    System.out.println(json);

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值