Java - JSON技术

本文介绍了JSON作为一种轻量级的数据交换格式,对比了其与Java对象的简洁性,并详细讲解了JSON的结构,如数组、对象、属性等。文章还探讨了JSON的无限嵌套特性和解析方式,包括Google的Gson库和阿里巴巴的FastJson库的使用方法,展示了如何将对象转换为JSON字符串,以及如何将JSON字符串反序列化为对象。最后,给出了具体的Java代码示例来说明这两个库的使用。
摘要由CSDN通过智能技术生成

JSON

JSON是JavaScript Object Notation - JS对象简谱,是一种轻量级的数据交换格式。

什么是JSON数据?
可以看一下下面一段代码对比:

Java
	class Book{
		private String name;
        private String info;
		get/set...
    }
	Book b = new Book();
    b.setName(“金苹果”);
    b.setInfo(“种苹果”);
    ...
    
    JSON:
	{
		"name":"金苹果",
		"info":"种苹果"
	}

通过对比我们可以看出JSON在数据存储这一块比Java更简洁明了。

其实JSON数据就是一段字符串而已,只不过有不同意义的分隔符将其分割开来而已,我们看上面的符号,里面有[] ,{}等符号,其中

  1. []中括号代表的是一个数组;
  2. {}大括号代表的是一个对象
  3. 双引号“”表示的是属性值
  4. 冒号:代表的是前后之间的关系,冒号前面是属性的名称,后面是属性的值,这个值可以是基本数据类型,也可以是引用数据类型。

注意
1.{}可以无限嵌套,里面的对象可以是{}。
2.键要用双引号括起来,通常Java解析时, 键不使用引号会报错, 而JS能正确解析。

我们看看下面案例:

{
	"name":"whc",
	"age":20,
	"friend":["张三","王二","麻子",{
				"name":"小新",
				"info":"很开心"
			}],
	"heihei":{
			"name":"跳高",
			"length":"150m"
	}
}

体现了可以嵌套的特点,里面的属性可以是引用数据类型也可以是基本数据类型,例如上面的“age”:20.

JSON解析方式

在了解了JSON的基础含义后,我们可以学习解析JSON的方式,目前有两种主流的解析方式,分别是Google公司的Gson解析和阿里巴巴的FastJson解析。

Gson解析
将对象转化为JSON字符串

步骤:
1.首先创建一个Gson对象
2.调用toJson()方法,传入参数是需要转换的对象。
String json = new Gson().toJSON(要转换的对象);
示例:

public class Demo1 {
    public static void main(String[] args) {
        //1.    创建Gson对象
        Gson g = new Gson();
        //2.    转换
        Book book = new Book("100","平凡的世界","锄禾日党务");
        String s = g.toJson(book);
        System.out.println(s);
    }
}

输出结果:

{"id":"100","name":"金苹果","info":"锄禾日党务"}

将JSON字符串转换为对象
步骤:

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

示例:

public class Demo2 {
    public static void main(String[] args) {
        //1.    创建Gson对象
        Gson g = new Gson();
        //2.    转换 {"id":100,"name":"平凡的世界","info":"国内文学作品"}
        //需要进行 转义
        String json = "{\"id\":100,\"name\":\"金苹果\",\"info\":\"锄禾日当午\"}";
        Book book = g.fromJson(json,Book.class);
        System.out.println(book);
        System.out.println(book.getInfo());
    }
}

输出结果是:

Book{id='100', name='金苹果', info='锄禾日当午'}
国内文学作品

当没有某一类对象时,时常转为map集合:

public class Demo2 {
    public static void main(String[] args) {
        Gson g = new Gson();
        //转集合
        HashMap data = g.fromJson("{\"id\":100,\"name\":\"金苹果\",\"info\":\"锄禾日当午\"}", HashMap.class);
        System.out.println(data.get("name"));
        System.out.println(data);

输出结果:

平凡的世界
{name=金苹果, id=100.0, info=锄禾日当午}

FastJson解析

将对象转换为JSON字符串
String json = JSON.toJSONString(要转换的对象);
示例:

package com.java.demo2;

import com.alibaba.fastjson.JSON;

public class Demo4 {
    public static void main(String[] args) {
        
        Book book = new Book("1002","唐诗三百首","床前明月光,地上鞋一堆。床上我杰哥,喊十块钱一双。");
        //1.    转换
        String json = JSON.toJSONString(book);
        System.out.println(json);
    }
}

输出结构:

{"id":1002,"info":"唐诗三百首","name":"床前明月光,地上鞋一堆。床上我杰哥,喊十块钱一双。"}

将JSON字符串转换为对象/集合
步骤

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

List<类型> list = JSON.parseArray(JSON字符串,类型.class); //传入集合

示例:

public class Demo5 {
    public static void main(String[] args) {
        String json = "{\"id\":1002,\"info\":\"锄禾日党务\",\"name\":\"金苹果\"}";
        //1.    转换 - 对象
        Book book = JSON.parseObject(json,Book.class);
        System.out.println(book);
        System.out.println(book.getId()); 
    }
}

结果是:

Book{id='1002', name='金苹果', info='锄禾日党务'}
1002

注意
在解析之前 要先导入jar包

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值