--> 首先导入jar包,并添加到Build Path

--> 需要User类:有属性、构造方法和setter、getter方法。

--> Test 测试类:

package com.dragon.java.gson;

import java.util.Arrays;
import java.util.List; import com.dragon.java.json.User;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken; /*
Gson: Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。
--> 可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。
*/
public class Test {
public static void main(String[] args) {
String json = "{\"name\": \"李四\", \"age\": 30}";
String jsons = "[{\"name\": \"李四\", \"age\": 40},{\"name\": \"张三\", \"age\": 20},{\"name\": \"王五\", \"age\": 30}]";
String jsonss = "{\"status\":\"ok\", \"data\": [{\"name\": \"李四\", \"age\": 30},{\"name\": \"张三\", \"age\": 20},{\"name\": \"王五\", \"age\": 30}] }"; gsonFirst(json);
System.out.println("----------------");
gsonTypeToken(jsons);
System.out.println("----------------");
gsonFinal(jsonss);
System.out.println("----------------");
serializtion();
System.out.println("----------------");
} /**
* 序列化
*/
private static void serializtion() {
// User user = new User("张三", 20);
Gson gson = new Gson();
// String jsonString = gson.toJson(user); User[] users = { new User("张三", 20), new User("李四", 30),
new User("王五", 40) };
// 把数组或可变参数转换成集合。这个集合是不可变的集合,不能添加或排除元素
List<User> userList = Arrays.asList(users);
// 可以将集合变为可操作的集合 // new ArrayList<>().addAll(userlist);
String json = gson.toJson(users);
System.out.println(json);
String json2 = gson.toJson(userList);
System.out.println(json2);
} /**
* Gson解析
*
* @param jsonss
*/
private static void gsonFinal(String jsonss) {
// 截取有用的字符串。也可以结合官方解析截取
//String newJson = jsonss.substring(jsonss.indexOf("["),jsonss.lastIndexOf("]") + 1);
Gson gson = new Gson();
A a = gson.fromJson(jsonss, A.class);
if (a.getStatus().equals("ok")) {
System.out.println(a.getStatus());
List<User> data = a.getData();
for (User user : data) {
System.out.println(user);
}
}
} /**
* TypeToken<>(){}
*
* @param jsons
*/
private static void gsonTypeToken(String jsons) {
Gson gson = new Gson();
// List users = gson.fromJson(jsons, List.class); // 泛型擦除:写的任何的泛型类,变成.class之后泛型都会丢失
TypeToken<List<User>> listType = new TypeToken<List<User>>() {
}; // TypeToken<>(){} --> (protected)抽象类 --> 记住泛型的类型 --> new了TypeToken的匿名内部类
List<User> users = gson.fromJson(jsons, listType.getType());
for (User user : users) {
System.out.println(user);
}
} /**
* 解析Json字符串
* 反序列化
*
* @param json
*/
private static void gsonFirst(String json) {
// 1、创建一个Gson对象
Gson gson = new Gson();
// 2、解析字符串
// --> 必须有无参的构造函数
// --> 每个属性必须提供setter、getter方法
User user = gson.fromJson(json, User.class);
System.out.println(user);
}
}

最新文章

  1. [译]学习IPython进行交互式计算和数据可视化(六)
  2. Codeforces Round #270 1002
  3. EF 6 for mysql
  4. Oracle中游标返回多条数据的情况
  5. 120条Photoshop新手必看技巧
  6. Leetcode 104. Maximum Depth of Binary Tree(二叉树的最大深度)
  7. jsp 相关特性
  8. [RxJS] Error handling operator: catch
  9. LINQ to SQL和Entity Framework对照
  10. ios 面试题 经典(比较全) 根据重点总结
  11. cin与cout详解
  12. css的特性
  13. Flask框架整理
  14. ie6定位absolute bug触发layout解决
  15. what&#39;s the python之python介绍
  16. javascript 如何打印、输出数组内容(将数组内容以字符串的形式展示出来)
  17. 51nod1312 最大异或和
  18. 001 -js对时间日期的排序
  19. git clone命令
  20. SQL Server 2016 Community Technology Preview 3.3

热门文章

  1. 【leetcode❤python】 400. Nth Digit
  2. Java开发中经典的小实例-(100能被3整除的数打印出来)
  3. Cron表达式简单学习
  4. Java原始的8中数据类型
  5. 程序设计入门—Java语言 第五周编程题 2井字棋(5分)
  6. Deep Learning 17:DBN的学习_读论文“A fast learning algorithm for deep belief nets”的总结
  7. combobox获取值
  8. ReentRantLock使用
  9. [WebLoad] 使用WebLoad进行Web Application 性能测试的流程
  10. jquery插件开发基础入门