原文链接: 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 的 子类.
普通对象的读取和载入
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.model.Stu;
public class Main {
public static void main(String[] args) {
Stu s = new Stu("root", 12);
// 实例化对象
Gson gson = new Gson();
// 对象转json 字符串
String jsonStr = gson.toJson(s);
// {"name":"root","age":12}
System.out.println(jsonStr);
// json 字符串转jsonObject 该格式类似js中的对象
// 可以使用get来获取对象属性的信息
JsonObject jsonObject = new JsonParser().parse(jsonStr).getAsJsonObject();
System.out.println(jsonObject); // {"name":"root","age":12}
System.out.println(jsonObject.get("age")); // 12
// 将json转为 java 对象
Stu s2 = (Stu) gson.fromJson(jsonStr, Stu.class);
System.out.println(s2.getName()); // root
}
}
数组的读取和载入必须使用 getAsJsonArray 的方式获取数组对象,否则报错
import com.google.gson.*;
import com.model.Stu;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Stu> stus = new ArrayList<>();
stus.add(new Stu("root1", 11));
stus.add(new Stu("root2", 12));
stus.add(new Stu("root3", 13));
// 实例化对象
Gson gson = new Gson();
// 对象转json 字符串
String jsonStr = gson.toJson(stus);
//[{"name":"root1","age":11},{"name":"root2","age":12},{"name":"root3","age":13}]
System.out.println(jsonStr);
// json 字符串转jsonObject 该格式类似js中的对象
// 可以使用get来获取对象中的第几个元素
// {"name":"root2","age":12}
JsonArray jsonArray = new JsonParser().parse(jsonStr).getAsJsonArray();
System.out.println(jsonArray.get(1));
// 遍历操作
for (JsonElement e : jsonArray)
System.out.println(e);
}
}
测试类
package com.model;
public class Stu {
String name;
int age;
public Stu(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}