JSON入门

目录

什么是JSON

JSON在JavaScript中的使用

json的定义

json的访问

json的两个常用方法

在Java中json的转换

javaBean和Json的转换

list和json的转换

Map集合和json的转换


什么是JSON

JSON是一种轻量级的数据交换格式。易于人阅读何编写。同时也易于机器解析何生成,JSON采用完全独异于语言的文本格式,多种语言都提供对json的支持

json是一种轻量级的数据交换格式

轻量是跟xml比较

数据交换指的是客户端跟服务器之间的业务数据的传递格式

JSON在JavaScript中的使用

json的定义

json是由键值对组成,并且由大括号包围,每个键由引号引起来,建和值之间可以用冒号进行分割,

多组键值对之间用逗号进行分割

            // json的定义
            var jsonObj = {
                "key1":12,
                "key2":"abc",
                "key3":true,
                "key4":[11,"arr",false],
                "key5":{
                    "key5_1":551,
                    "key5_2":"ket5_2_value"
                },
                "key6":[{
                    "key6_1_1":6611,
                    "key6_1_2":"key6_1_2_value"
                }, {
                    "key6_2_1":6621,
                    "key6_2_2":"key6_2_2_value"
                }]
            };

json的访问

json本身是一个对象

json中的key可以理解成对象中的一个属性

json中的key访问跟访问对象属性一样,json对象.key

            // json的访问
            alert(jsonObj.key1);
            alert(jsonObj.key2)
            alert(jsonObj.key3)
            alert(jsonObj.key4)
            for (var i = 0;i<jsonObj.key4.length;i++){
                alert(jsonObj.key4[i]);
            }
            alert(jsonObj.key5.key5_1)
            alert(jsonObj.key5.key5_2)
            alert(jsonObj.key6)
            for (var i = 0;i<jsonObj.key6.length;i++){
                alert(jsonObj.key6[i]);
            }

json的两个常用方法

json的存在有两种形式。

一种是,对象的形式存在,我们叫它json对象

一种是,字符串的形式存在,我们叫它json字符串

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

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

JSON.stringify() 把json对象转化为json字符串

JSON.parse() 把json字符串转化为json字符串

在Java中json的转换

gson.toJson(对象名);//把java对象转化为json字符串

gson.fromJson(json字符串名, class/type);//把json字符串转换为Java对象

javaBean和Json的转换

在JavaBean与Json的转化中,直接调用toJson可将对象转化为json字符串

将json转化为JavaBean时,直接调用fromJson方法

//javaBean和Json的转换
    @Test
    public void test1(){
        Person person = new Person(1,"qw");
​
        //创建Gson对象实例
        Gson gson = new Gson();
        String personjsonString = gson.toJson(person);//把java对象转化为json字符串
        System.out.println(personjsonString);
​
        Person person1 = gson.fromJson(personjsonString, Person.class);//把json字符串转换为Java对象
​
    }

list和json的转换

list转化为json时与JavaBean相同

将json转化为list时调用fromJson(json字符串名,type)

type的创建需声明一个类并继承TypeToken类此类具有泛型,泛型即为要转化的类型,这个类只用继承即可

public class PersonListType extends TypeToken<ArrayList<Person>> {
}

或者可以使用匿名内部类的方法

List<Person> list = gson.fromJson(personListJsonString, new TypeToken<ArrayList<Person>>(){}.getType());

在获得type时new此类对象并调用getType方法即可

//list和json的转换
    @Test
    public void test2(){
​
        List<Person> personList = new ArrayList<>();
​
        personList.add(new Person(1,"小明"));
        personList.add(new Person(2,"小红"));
        personList.add(new Person(3,"小李"));
​
        Gson gson = new Gson();
​
        String personListJsonString = gson.toJson(personList);
//        System.out.println(personListJsonString);
        List<Person> list = gson.fromJson(personListJsonString, new PersonListType().getType());
        //System.out.println(list);
        Person person = list.get(0);
        System.out.println(person);
​
    }

Map集合和json的转换

与list的转化相同,代码如下

public class PersonMapType extends TypeToken<HashMap<Integer,Person>> {
}

也可以使用匿名内部类

Map<Integer,Person> personMap1 = gson.fromJson(personJsonMap, new TypeToken<HashMap<Integer,Person>>(){}.getType());

 public void test3(){
        Map<Integer,Person> personMap = new HashMap<>();
​
        personMap.put(1,new Person(1,"小明"));
        personMap.put(2,new Person(2,"小红"));
        personMap.put(3,new Person(3,"小李"));
​
        Gson gson = new Gson();
        //把map转化为json字符串
        String personJsonMap = gson.toJson(personMap);
        //System.out.println(personJsonMap);
​
        //把json转化为map
        Map<Integer,Person> personMap1 = gson.fromJson(personJsonMap, new PersonMapType().getType());
        System.out.println(personMap1);
​
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值