gson的简单使用—json数据和对应类之间的互相转换

最近项目上用到json数据,简单处理json串和生成json串的功能,自己学习了一下,做了一个简单的入门步骤。
使用的是Gson提供了fromJson() 和toJson() 两个直接用于解析和生成的方法,前者实现反序列化,后者实现了序列化。
Gson很熟练的大大就不需要看了…



所需jar包maven引用

<dependencies>
	<dependency>
		<groupId>com.google.code.gson</groupId>
		<artifactId>gson</artifactId>
		<version>2.8.0</version>
	</dependency>
</dependencies>

观察json串数据

{"token":"123123123","user":[{"id":"123456","loginname":"zhangsan","name":"张三","no":"01012345678","email":"[email protected]","phone":"77887788","mobile":"12312341234","useable":"1","office":"0101","levelName":"领导"}]}

拿到json数据可以先去这里校验json字符串的正确性在线JSON校验传送门


还有展开功能方便观察

{
	//字符串对象
	"token": "123123123",
	//user其实是一个对象数组[{user1,user2...}]
	"user": [{
		"id": "123456",
		"loginname": "zhangsan",
		"name": "张三",
		"no": "01012345678",
		"email": "[email protected]",
		"phone": "77887788",
		"mobile": "12312341234",
		"useable": "1",
		"office": "0101",
		"levelName": "领导"
	}]
}

构建实体类

因为是结构简单的json字符串,可以比较迅速的写出实体类

//承载请求的json数据
public class UserRequestData {
	private String token;
	//我们观察发现user其实应该是一个对象数组
	//数组中存放的才是一个一个的用户对象
	private Object[] user;
	//Getter and Setter
	//Constructor
}
//内部类比较直观
class User{
	private String id;
	private String loginname;
	//省略
}
	

fromJson()

将json字符串解析为对应的类

public static void main(String[] args) {
	String data = "{\"token\":\"123123123\",\"user\":[{\"id\":\"123456\",\"loginname\":\"zhangsan\",\"name\":\"张三\",\"no\":\"01012345678\",\"email\":\"[email protected]\",\"phone\":\"77887788\",\"mobile\":\"12312341234\",\"useable\":\"1\",\"office\":\"0101\",\"levelName\":\"领导\"}]}";
// 	利用gson封装好的方法解析字符串,得到一个对象
	UserRequestData userRequestData = gson.fromJson(data,UserRequestData.class);
	
}

toJson()

用实体类产生json字符串

public static void main(String[] args) {
   	String token = "123123123";
   	User u = new User("123456","zhangsan","张三","01012345678","[email protected]","77887788","12312341234","1","0101","领导");
   	Object[] users = new Object[1];
   	users[0] = u;
   	UserRequestData userRequestData = new UserRequestData(token,users);
   	String jsonStr = gson.toJson(userRequestData);
   	System.out.println(jsonStr);
}

趁热打铁再构建一个实体类

  1. json数据
{"token":"12345","officeList":[{"code":"001","name":"鹰酱局","shortName":"白头鹰联邦调查局","childList":[{"code":"001001","name":"局领导","shortName":"局领导"},{"code":"001002","name":"行动处","shortName":"行动处"},{"code":"001003","name":"物资处","shortName":"物资处"}]},{"code":"001002","name":"行动处","shortName":"行动处","childList":[{"code":"001002001","name":"处领导","shortName":"处领导"},{"code":"001002002","name":"行动A组","shortName":"行动A组"},{"code":"001002002","name":"行动B组","shortName":"行动B组"}]},{"code":"001003","name":"物资处","shortName":"物资处","childList":[{"code":"001002001","name":"处领导","shortName":"处领导"},{"code":"001002002","name":"物资A组","shortName":"物资A组"},{"code":"001002002","name":"物资B组","shortName":"物资B组"}]}]}

  1. 展开方便观察
    仔细观察数据的结构,依次分析每一层的内容,由此确定实体类的结构和属性
{
    "token": "12345",
    "officeList": [
        {
            "code": "001",
            "name": "鹰酱局",
            "shortName": "白头鹰联邦调查局",
            "childList": [
                {
                    "code": "001001",
                    "name": "局领导",
                    "shortName": "局领导"
                },
                {
                    "code": "001002",
                    "name": "行动处",
                    "shortName": "行动处"
                },
                {
                    "code": "001003",
                    "name": "物资处",
                    "shortName": "物资处"
                }
            ]
        },
        {
            "code": "001002",
            "name": "行动处",
            "shortName": "行动处",
            "childList": [
                {
                    "code": "001002001",
                    "name": "处领导",
                    "shortName": "处领导"
                },
                {
                    "code": "001002002",
                    "name": "行动A组",
                    "shortName": "行动A组"
                },
                {
                    "code": "001002002",
                    "name": "行动B组",
                    "shortName": "行动B组"
                }
            ]
        },
        {
            "code": "001003",
            "name": "物资处",
            "shortName": "物资处",
            "childList": [
                {
                    "code": "001002001",
                    "name": "处领导",
                    "shortName": "处领导"
                },
                {
                    "code": "001002002",
                    "name": "物资A组",
                    "shortName": "物资A组"
                },
                {
                    "code": "001002002",
                    "name": "物资B组",
                    "shortName": "物资B组"
                }
            ]
        }
    ]
}

  1. 实体类
public class GroupReuqestData {
	private String token;
	private Object[] officeList;
	//Getter and Setter
	//Constructor
}
class Org{
	private String code;
	private String name;
	private String shortName;
	private Object[] childList;
	//Getter and Setter
	//Constructor	
}
class Group{
	private String code;
	private String name;
	private String shortName;
	//Getter and Setter
	//Constructor	
}

  1. fromJson()查看结果
    gson的简单使用

gson的简单使用

总结


现在回想刚开始用的这个jar包处理简单json串还行

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

遇到复杂一点的json串就没有这个gson.jar方便了。

import com.google.gson.Gson;

相关文章: