javaweb----知识点复习7
今天来复习一下json的知识点:
一、json的定义:
json是由键值对组成,键由引号引起来,中间用 :(冒号) 分割,值可以有很多种形式。
var jsonObj = {
"key1":12,
"key2":"abc",
"key3":true,
"key4":[11,"arr",false],
"key5":{
"key5_1":51,
"key5_2":"key5_2_value",
},
"key6":[{
"key6_1_1":611,
"key6_1_2":"key6_1_2_value"
},{"key6_2_1":621,
"key6_2_2":"key6_2_2_value"}
],
};
我们可以发现json的值可以是数字,也可以是字符串,也可以是布尔值,也可以是数组,也可以是json对象。
那么json在浏览器中本身是什么呢?
让我们alert一下:
alert(typeof (jsonObj));
我们alert之后发现json其实是一个对象。
二、json的访问:
既然json本身是一个对象,那么我们就可以用 . 把对象中的属性输出:json对象.key
alert(jsonObj.key1); //12
alert(jsonObj.key4[0]); //数组元素
alert(jsonObj.key5.key5_2); //json中的json元素
alert(jsonObj.key6[1].key6_2_2)
三、json存在的形式:
一种是对象的形式存在,叫json对象
一种是字符串的形式存在,叫json字符串
一般我们需要操作json中的数据时,需要json对象形式
一般我们需要在客户端和服务器端进行数据交换的时候用字符串。
那么如何把json对象转换为字符串,又如何把字符串转换为json对象呢:
在JS中,可以用
JSON.stringify(json对象)
把json对象转换为字符串
演示:
var jsonObjString = JSON.stringify(jsonObj); alert(jsonObjString); //得到json字符串格式 toString()
输出:
我们也可以用
JSON.parse()
把json字符串转换为json对象
演示:
var jsonObj1 = JSON.parse(jsonObjString); alert(jsonObj1.key1);
输出:
四、java程序中如何处理json:
首先我们要导入gson包(这是google开发的)
① json与bean的互转:
首先我们要创建一个gson实例:
Gson gson = new Gson();
用gson对象的方法把bean对象转化成为json字符串:
Man man = new Man(1,"man1"); //创建Gson对象实例 Gson gson = new Gson(); //toJson方法可以把java对象转化成为java字符串 String gsonJsonString = gson.toJson(man); System.out.println(gsonJsonString);
输出:
{"id":1,"name":"man1"}
我们可以发现这就是json的形式。
我们也可以把json字符串转化为bean对象:
通过使用gson对象的fromJson(字符串,类)方法:
Man man1 = gson.fromJson(gsonJsonString, Man.class); System.out.println(man1);
输出:
Man:name = man1,id = 1
② List和Json的互转
把list对象转换为json对象:
gson.toJson(manList)
代码:
List<Man> manList = new ArrayList<>(); manList.add(new Man(1,"man1")); manList.add(new Man(2,"man2")); Gson gson = new Gson(); //把list转化成为json字符串 String s = gson.toJson(manList); System.out.println(s);
输出:
[{"id":1,"name":"man1"},{"id":2,"name":"man2"}]
如果我们想把json对象转换为list对象的话就有些特殊了,需要写一个类继承TypeToken<> 类,泛型填的是List<我们要转化的类>
然后再使用gson对象的方法:
//把json对象转换为list对象 List<Man> list = gson.fromJson(s,new PersonListType().getType()); System.out.println(list); Man man = list.get(0); System.out.println(man);
输出:
[Man:name = man1,id = 1, Man:name = man2,id = 2]
Man:name = man1,id = 1