原文链接: java gson 读取和载入
需要下载并引入相应的jar包
http://mvnrepository.com/artifact/com.google.code.gson/gson
Gson 的 节点对象:
JsonElement : 所有的节点 都是 JsonElement 对象.
JsonPrimitive : 基本的 数据类型的 节点 对象, JsonElement 的子类.
JsonNull : 代表 空节点 对象,即 有 key,value 为空,JsonElement 的子类.
JsonObject : 对象 数据类型的 节点 对象, JsonElement 的 子类.
JsonArray : 数组 数据类型的 节点 对象, JsonElement 的 子类.
普通对象的读取和载入
1import com.google.gson.Gson; 2import com.google.gson.JsonObject; 3import com.google.gson.JsonParser; 4import com.model.Stu; 5 6public class Main { 7 8 public static void main(String[] args) { 9 Stu s = new Stu("root", 12); 10 11 // 实例化对象 12 Gson gson = new Gson(); 13 14 // 对象转json 字符串 15 String jsonStr = gson.toJson(s); 16 // {"name":"root","age":12} 17 System.out.println(jsonStr); 18 19 // json 字符串转jsonObject 该格式类似js中的对象 20 // 可以使用get来获取对象属性的信息 21 JsonObject jsonObject = new JsonParser().parse(jsonStr).getAsJsonObject(); 22 23 System.out.println(jsonObject); // {"name":"root","age":12} 24 25 System.out.println(jsonObject.get("age")); // 12 26 27 // 将json转为 java 对象 28 Stu s2 = (Stu) gson.fromJson(jsonStr, Stu.class); 29 System.out.println(s2.getName()); // root 30 } 31}
数组的读取和载入必须使用 getAsJsonArray 的方式获取数组对象,否则报错
1import com.google.gson.*; 2import com.model.Stu; 3 4import java.util.ArrayList; 5import java.util.List; 6 7public class Main { 8 9 public static void main(String[] args) { 10 11 List<Stu> stus = new ArrayList<>(); 12 stus.add(new Stu("root1", 11)); 13 stus.add(new Stu("root2", 12)); 14 stus.add(new Stu("root3", 13)); 15 16 // 实例化对象 17 Gson gson = new Gson(); 18 19 // 对象转json 字符串 20 String jsonStr = gson.toJson(stus); 21 22 //[{"name":"root1","age":11},{"name":"root2","age":12},{"name":"root3","age":13}] 23 System.out.println(jsonStr); 24 25 // json 字符串转jsonObject 该格式类似js中的对象 26 // 可以使用get来获取对象中的第几个元素 27 // {"name":"root2","age":12} 28 JsonArray jsonArray = new JsonParser().parse(jsonStr).getAsJsonArray(); 29 30 System.out.println(jsonArray.get(1)); 31 32 // 遍历操作 33 for (JsonElement e : jsonArray) 34 System.out.println(e); 35 } 36}
测试类
1package com.model; 2 3public class Stu { 4 String name; 5 int age; 6 7 public Stu(String name, int age) { 8 this.name = name; 9 this.age = age; 10 } 11 12 public String getName() { 13 return name; 14 } 15 16 public void setName(String name) { 17 this.name = name; 18 } 19 20 public int getAge() { 21 return age; 22 } 23 24 public void setAge(int age) { 25 this.age = age; 26 } 27}