Gson在Java中的使用实例

Gson在Java中的使用

JSON ( 官网) 是一种文本形式的数据交换格式,它比XML更轻量、比二进制容易阅读和编写,调式也更加方便。其重要性不言而喻。解析和生成的方式很多,Java中最常用的类库有:JSON-Java、Gson、Jackson、FastJson等。

所需依赖包

jar包:gson-2.8.2.jar 下载
依赖包配置:

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

一、Gson的基本用法

Gson提供了fromJson() 和toJson() 两个直接用于解析和生成的方法,前者实现反序列化,后者实现了序列化。

1.基本数据类型的生成和解析

(1)基本数据类型生成

Gson gson = new Gson();
String jsonNumber = gson.toJson(88); 
String jsonBoolean = gson.toJson(false); 
String jsonString = gson.toJson("String");

(2)基本数据类型的解析

int number = new Gson().fromJson(jsonNumber, int.class); // 88
boolean flag = new Gson().fromJson(jsonBoolean, boolean.class); // false
String str = new Gson().fromJson(jsonString, String.class); // String
2.POJO类的生成与解析
public class Student {
	public String name;
	public int age;
	public String class;
    public Student(String name, int age, String class) {
		this.name = name;
		this.age = age;
		this.class = class;
	}
}

(1)生成

	Gson gson = new Gson();
    Student stu = new Student("张三",24,"中国");
    String jsonObject = gson.toJson(stu);

(2)解析

	Gson gson = new Gson();
	String jsonString = "{\"name\":\"张三\",\"age\":24,\"class\":\"中国\"}";
	Student stu = gson.fromJson(jsonString, Student.class);

二、Gson在Java中的具体实例

Sting arr = "{'list':[{'fid':'1','name':'北京','hospitalld':'99999996'}, {'fid':'2','name':'深圳','hospitalld':'05786799'}]}";

1.利用gson把jsonList转化为一个list对象并将不需要的字段删除

/**
  * 1.将字符串数据转成JSONObject对象,用getJSONArray获取arr中的list集合
  * 2.创建新的 JSONArray 用户存放删除后的数据
  * 3.删除key-foodList里不需要的key/value
  * 4.删除jsonArray里指定的key/value并将删除后的的新值赋给jsonArray1
  * 5.利用Gsonde的TypeToken方法将转换好的list集合转换相对应额对象
  */
//将app返回的String arr解析;
JSONArray jsonArray = JSONObject.fromObject(arr).getJSONArray("list");
JSONArray jsonArray1 = new JSONArray();
for(int i = 0; i < jsonArray.size(); i++){
	JSONObject jsonObject = (JSONObject) jsonArray.get(i);
	jsonArray1.add(jsonObject.discard("createdate"));//discard删除指定的字段
}
List<实体类对象> list = null;
GSON gson = new Gson();
if (jsonArray1!=null){
	list = gson.fromJson(String.valueOf(jsonArray1), new TypeToken<List<实体类对象>>(){}.getType());
}

2.利用gson把jsonList转化为一个list对象

/**
  * 1.将字符串数据转成JSONObject对象,用getJSONArray获取arr中的list集合
  * 2.利用Gsonde的TypeToken方法将转换好的list集合转换相对应额对象
  */
JSONArray jsonArray = JSONObject.fromObject(arr).getJSONArray("list");
List<实体类对象> list = null;
GSON gson1 = new Gson();
if (jsonArray1!=null){
	list = gson1.fromJson(String.valueOf(jsonArray1), new TypeToken<List<实体类对象>>(){}.getType());
}

3.json转化为一个类对象

JSONObject objects = JSONObject.fromObject(arr);
实体类对象 Customer = (实体类对象) JSONObject.toBean(objects.getJSONObject("Customer"), 实体类对象.class);

4.将 序列化后的字符串 转 成 map 对象

// jsonStr 序列化后的字符串
Gson gson2=new Gson();
String jsonStr="{'1': {'fid': '1','name': '北京','hospitalld': '99999996'},'2': {'fid': '2','name': '深圳','hospitalld': '05786799'}}";
Map<String, 实体类对象> citys = gson2.fromJson(jsonStr, new TypeToken<Map<String, 实体类对象>>() {}.getType());
System.out.println(citys.get("1").getName()+"-------"+citys.get("2").getName());
  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
使用Gson库可以很方便地解析JSON格式的字符串或文件。下面是一个简单的示例,展示如何读取JSON文件并解析其的内容。 首先,需要导入Gson库。可以通过Maven等构建工具来添加依赖,或者手动下载jar包并添加到项目。 假设我们有一个名为data.json的文件,其包含以下内容: ```json { "name": "John Doe", "age": 30, "email": "john.doe@example.com" } ``` 我们可以使用以下代码读取该文件并解析其的内容: ```java import com.google.gson.Gson; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class JsonReaderExample { public static void main(String[] args) { try { BufferedReader br = new BufferedReader(new FileReader("data.json")); Gson gson = new Gson(); Data data = gson.fromJson(br, Data.class); System.out.println(data); } catch (IOException e) { e.printStackTrace(); } } } class Data { String name; int age; String email; public String toString() { return "Name: " + name + "\nAge: " + age + "\nEmail: " + email; } } ``` 在上面的代码,我们首先读取文件并创建一个BufferedReader对象。然后,我们创建一个Gson对象,并使用fromJson()方法将文件内容解析为Data对象。最后,我们打印Data对象的内容。 需要注意的是,在上面的代码,我们使用了一个Data类来表示JSON文件的数据。这个类的属性名必须与JSON文件的键名一致,否则解析会失败。在这个例子,我们只需要三个属性:name、age和email。 运行上面的代码,将会输出以下内容: ``` Name: John Doe Age: 30 Email: john.doe@example.com ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值