今天来复习一下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));


javaweb----知识点复习7_java程序

 我们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)  

javaweb----知识点复习7_字符串_02javaweb----知识点复习7_json对象_03

javaweb----知识点复习7_字符串_04javaweb----知识点复习7_java程序_05

 

 三、json存在的形式:

一种是对象的形式存在,叫json对象
一种是字符串的形式存在,叫json字符串

一般我们需要操作json中的数据时,需要json对象形式

一般我们需要在客户端和服务器端进行数据交换的时候用字符串。

 

 那么如何把json对象转换为字符串,又如何把字符串转换为json对象呢:

在JS中,可以用

JSON.stringify(json对象)

把json对象转换为字符串

演示:

var jsonObjString = JSON.stringify(jsonObj);
    alert(jsonObjString);  //得到json字符串格式  toString()

输出:

javaweb----知识点复习7_json对象_06

 

我们也可以用

JSON.parse() 

把json字符串转换为json对象

 

演示:

var jsonObj1 = JSON.parse(jsonObjString);
    alert(jsonObj1.key1);

输出:

javaweb----知识点复习7_json字符串_07

 

 四、java程序中如何处理json:

首先我们要导入gson包(这是google开发的)

javaweb----知识点复习7_json_08

 

① 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