JSON(GSON)

学习视频地址Java Web 尚硅谷

image-20220307183305401

1.定义

image-20220307184407356

2.访问

alert(typeof(jsonObj));// object json就是一个对象

json本身是一个对象。
json中的key我们可以理解为是对象中的一个属性。
json中的key访问就跟访问对象的属性一样: json 对象.key

image-20220307185438584

下面例子中和上面定义时是相同的

json中的数组 和 arr 是一样的,也有相同的操作

image-20220307185542229

值是数组的取法

image-20220307185746273

值是 一个json的取法

image-20220307221811919

值是一个 json数组的情况

image-20220307222456942

3.json的两个常用方法

json的存在有两种形式。

  • 一种是:对象的形式存在,我们叫它json对象。
  • 一种是:字符串的形式存在,我们叫它json字符串。

一般我们要操作json中的数据的时候,需要json对象的格式。
一般我们要 在客户端和服务器之间进行数据交换的时候,使用json字符串。

JSON.stringify()把json对象转换成为json字符串
JSON.parse()把json字符串转换成为json对象

image-20220307225731756

就是没有格式的 没有换行的 直接输出 原本的内容

image-20220307230443502

4.JSON在java中的使用

使用了google的Gsonimage-20220307231106153

package com.atguigu.pojo;

public class Person {

    private Integer id;
    private String name;

    public Person() {
    }

    public Person(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

  • javaBean 和json的互转

     @Test
        public void test1(){
            Person person = new Person(1,"好帅!"); 
            // 创建Gson对象实例
            Gson gson = new Gson();
            // toJson方法可以把java对象转换成为json字符串
            String personJsonString = gson.toJson(person); //{"id":1,"name":"好帅!"}
            System.out.println(personJsonString);
            // fromJson把json字符串转换回Java对象
            // 第一个参数是json字符串
            // 第二个参数是转换回去原来的Java对象类型
            Person person1 = gson.fromJson(personJsonString, Person.class);
            System.out.println(person1);
        }
    
  • List 和json的互转

    先写一个空的类 需要基础com.google.gson.reflect.TypeToken,并且传入确定的参数 ,后面转化时的type需要用到(这个方法可以)

    package com.atguigu.json;
    
    import com.atguigu.pojo.Person;
    import com.google.gson.reflect.TypeToken;
    
    import java.util.ArrayList;
    
    public class PersonListType extends TypeToken<ArrayList<Person>> {
    }
    
    public void test2() {
            List<Person> personList = new ArrayList<>();
    
            personList.add(new Person(1, "AA"));
            personList.add(new Person(2, "BB"));
    
            Gson gson = new Gson();
    
            // 把List转换为json字符串
            String personListJsonString = gson.toJson(personList);
            System.out.println(personListJsonString);
    		//[{"id":1,"name": "AA"},{"id":2,"name":"BB"}]
            List<Person> list = gson.fromJson(personListJsonString, new PersonListType().getType());
            System.out.println(list);
            Person person = list.get(0);
            System.out.println(person);
        }
    
    
    
    
  • map和json的互转

    也可以写成 匿名内部类

    package com.atguigu.json;
    
    import com.atguigu.pojo.Person;
    import com.google.gson.reflect.TypeToken;
    
    import java.util.HashMap;
    
    public class PersonMapType extends TypeToken<HashMap<Integer, Person>> {
    }
    
    @Test
        public void test3(){
            Map<Integer,Person> personMap = new HashMap<>();
    
            personMap.put(1, new Person(1, "A好帅"));
            personMap.put(2, new Person(2, "B也好帅"));
    
            Gson gson = new Gson();
            // 把 map 集合转换成为 json字符串
            String personMapJsonString = gson.toJson(personMap); 
            System.out.println(personMapJsonString);
    //{"1":{"id":1,"name":"国哥好帅"},"2":{"id":2,"name":"康师傅也好帅"}}
    
    
    //        Map<Integer,Person> personMap2 = gson.fromJson(personMapJsonString, new PersonMapType().getType());
            Map<Integer,Person> personMap2 = gson.fromJson(personMapJsonString, new TypeToken<HashMap<Integer,Person>>(){}.getType());
    
            System.out.println(personMap2);
            Person p = personMap2.get(1);
            System.out.println(p);
    
        }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值