JSON解析

JSON解析

JSON的对象格式

一个对象, 由一个大括号表示.

​ 括号中描述对象的属性 . 通过键值对来描述对象的属性

​ (可以理解为, 大括号中, 包含的是一个个的键值对.)

格式:

  • 键与值之间使用冒号连接, 多个键值对之间使用逗号分隔.
  • 键值对的键 应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解析.)
  • 键值对的值, 可以是JS中的任意类型的数据
//例子,此JSON中存储了一个对象,对象中有属性name和info,以及他们所对应的值
{ 
	"name":"金苹果", 
	"info":"种苹果" 
}

JSON的数组格式

JSON的对象格式和数组格式可以相互嵌套

​ 即对象格式中的某一个值可以使用数组的形式来存储,而数组中的某一个值也可以是对象

格式: [元素1,元素2…]

//例子
{ 
	"name":"包子", 
	"age":"18", 
	//朋友属性对应的值是一个数组,数组中又包含了对象
	"pengyou":["张三","李四","王二","麻子",{ 
			"name":"野马老师", 
			"info":"像匹野马一样狂奔在技术钻研的道路上" 
			}], 
	//对象的属性对应的值也可以是一个对象
	"heihei":{ 
		"name":"大长刀", 
		"length":"40m" 
	} 
}

总结:

  • 数组中可以包含对象(即数组中的某一个元素为一个对象)
  • 对象中可以包含数组(即属性名对应的值为数组)

Java与JSON之间的相互转换

Java和JSON之间相互转化的形式,我们常见的又两种,分别是谷歌的GSON和阿里巴巴的FastJson

GSON

  • 将对象转换程JSON字符串

    步骤:

    1. 引入JAR包 (引入GSON的jar包)

    2. 在需要转换JSON字符串的位置编写如下代码即可:

      ​ String json = new Gson().toJson(要转换的对象);

      //1.创建Gson对象
      	Gson g = new Gson();
      //2.    转换
          Book b = new Book("100","金苹果","种植苹果真辛苦");
          String s = g.toJson(b);  //关键语句
          System.out.println(s);
      
  • 将JSON字符串转换成对象或集合

    步骤:

    1. 引入JAR包 (和上面一样,引入GSON的jar包, 转出和转入为同一个jar包)

    2. 在需要转换Java对象的位置, 编写如下代码:

      ​ 对象 = new Gson().fromJson ( JSON字符串 , 对象类型.class);

      例子1:转换成对象

//1.创建Gson对象
	Gson g = new Gson();
//2.转换 : {"id":"100","name":"金苹果","info":"种植苹果真辛苦"}  
	//将需要转换的JSON语句导入后引号前会自动加上转义字符
    Book b = g.fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"种植苹果真辛苦\"}", Book.class);
    //class的属性需要和前面所接受的属性一致
    System.out.println(b.getId());

​ 例子2:转换成集合

//1.创建Gson对象

        Gson g = new Gson();
        
//2. 转换  :  {"id":"100","name":"金苹果","info":"种植苹果真辛苦","page":["锄禾日当午","汗滴禾下土","嘿嘿嘿嘿嘿"]}

		//后面的class属性为HashMap,前面接收的数据类型也应该为HashMap
        HashMap data = g.fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"种植苹果真辛苦\",\"page\":[\"锄禾日当午\",\"汗滴禾下土\",\"嘿嘿嘿嘿嘿\"]}", HashMap.class);
        
        //对象中page对应的值为一个数组,转换出来后以ArrayList的形式存储
        List page = (List) data.get("page");
        System.out.println(page.get(1));

FastJson

  • 将对象转换成JSON字符串

    步骤:

    ​ 1. 引入JAR包 (引入 FastJson 的jar包)

    ​ 2. 在需要转换JSON字符串的位置编写如下代码即可:

    ​ String json=JSON.toJSONString(要转换的对象);

//例子
//1.创建要转换的对象
		Book book = new Book("1002","唐诗三百首","一二三,三四五,五六七,七八九");
//2.转换
        String json = JSON.toJSONString(book);  //book为转换对象,传入括号中
        System.out.println(json);
  • 将JSON字符串转换成对象或集合

    步骤:

    ​ 1. 引入JAR包 (转入和转出使用同一个jar包,都是FastJson的jar包)

    ​ 2. 在需要转换Java对象的位置, 编写如下代码:

    ​ 类型 对象名=JSON.parseObject ( JSON字符串, 类型.class);

    ​ 或

    ​ List<类型> list=JSON.parseArray ( JSON字符串, 类型.class);

    ​ 例子1:JSON字符串转换成对象

//1.转换: {"id":"1002","info":"一二三,三四五,五六七,七八九","name":"唐诗三百首"}
       
       Book book = JSON.parseObject("{\"id\":\"1002\",\"info\":\"一二三,三四五,五六七,七八九\",\"name\":\"唐诗三百首\"}", Book.class);
        System.out.println(book.getId());
        
 //转换成对象,使用的是 JSON.parseObject 方法

​ 例子2:JSON字符串转换成集合

//1.    转换  : ["一二三","二三四","三四五"]

        List<String> strings = JSON.parseArray("[\"一二三\",\"二三四\",\"三四五\"]", String.class);
        System.out.println(strings.get(1));
        
//转换成集合,使用的是 JSON.parseArray 方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值