Json数据交换格式

1.什么是Json?

  • 1.1 Json是客户端与服务器的一种数据交换格式
  • 1.2 采用键值对方式存储
  • 1.3 与xml相比,效率更高
  • 1.4 Json本身是一个对象

2.Json的格式

 var json={
            "key":[1,2,3], //键必须是string类型,值可以为任何类型,类似于Python的字典
            "key1":["value1",2,3],
            "key2":"value2"
        }

3.json和java对象的相互转换

public  void test()
    {
        Gson gson=new Gson(); //json的封装类
        Person person=new Person("张三",18,1000);
        String str=gson.toJson(person); //将java对象转化为字符串
        System.out.println(str);
    Person person1=gson.fromJson(str,person.getClass()); //将字符串装换为java对象
        System.out.println(person1);
    }

4.json对象和集合的相互转换

    //json和集合的相互转化
    public  void test()
    {
        Gson gson=new Gson(); //json的封装类
        List<Person> list=new ArrayList<Person>();
        list.add(new Person("jock",18,1000));
        list.add(new Person("john",20,2000));
        String str= gson.toJson(list);
        System.out.println(str);
        List<Person> list1=gson.fromJson(str,new PersonListType().getType());
        System.out.println(list1);
    }
 //gson包中有一个反射类TypeToken,用于json数据转换为集合数据
public class PersonListType extends TypeToken<List<Person>> {
}

新建一个类去继承typetoken的方式不常用,会导致类的大量冗余

5.json和map的相互转换

 //json和Map的相互转化
    public  void test()
    {
        Gson gson=new Gson(); //json的封装类
        Map<String,Person> map=new HashMap<String,Person>();
        map.put("1",new Person("tom",18,1000));
        map.put("2",new Person("rose",20,2000));
        String str= gson.toJson(map);
        System.out.println(str);
        //一般采用内部匿名类
        Map<String,Person> map1=gson.fromJson(str,new TypeToken<Map<String,Person>>()
        {

        }.getType());
       Set<Map.Entry<String,Person>> entry=  map1.entrySet();
        for (Map.Entry<String,Person> m:entry
             ) {
            System.out.println(m.getKey());
            System.out.println(m.getValue());
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值