1.介绍
Gson是Google提供的处理JSON数据的Java类库,主要用于转换Java对象和JSON对象。
2.依赖
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.5</version>
</dependency>
3. 解析JSON对象
利用Gson将复杂的JSON数据转化成Java对象。
先创建一个java对象,记得导入lombok的依赖
import lombok.Data;@Data
public class BookModel {private String id;private String language;private String edition;private String author;
}
在使用Gson解析数据时,需要对其实例化,具体操作方式有两种。
public static void main(String[] args) {final Gson gson = new Gson(); //实例化final Gson gson1 = new GsonBuilder().create(); //实例化二}
在实例化Gson之后,可以使用Gson类中提供的方法将JSON字符串转化成指定的Java对象
案例
public static void main(String[] args) {//json对象String json = "{\n" +" \"id\":1,\n" +" \"language\":\"java\",\n" +" \"edition\":\"one\",\n" +" \"author\":\"张三\"\n" +"}";Gson gson = new Gson();//创建java对象BookModel bookModel = gson.fromJson(json, BookModel.class);//输出数据System.out.println(bookModel.getId()+"\t"+bookModel.getLanguage());}
4.解析JSON数组
使用Gson解析JSON数组时,需要使用Gson类中提供的方法将JSON数组转化成指定类型的集合,方法如下:
该方法的输入参数类型为String和Type。其中,引入Type类型是为了支持对泛型的操作。在Gson包中,可以使用TypeToken类来创建Type对象。
public static void main(String[] args) {//json对象String json = "[\n" +" {\n" +" \"id\":1,\n" +" \"language\":\"java\",\n" +" \"edition\":\"one\",\n" +" \"author\":\"张三\"\n" +" },\n" +" {\n" +" \"id\":2,\n" +" \"language\":\"C++\",\n" +" \"edition\":\"two\",\n" +" \"author\":\"李四\"\n" +" }\n" +"]";Gson gson = new Gson();//TypeToken操作 ,可支持类型包括泛型final Type listMl = new TypeToken<List<BookModel>>(){}.getType();//转换成集合List<BookModel>fromJson = gson.fromJson(json, listMl);for (BookModel bookModel : fromJson) {System.out.println(bookModel.getId()+"\t"+bookModel.getLanguage());}}
5.解析复杂嵌套式的JSON数据
我们再创建一个java实体,之前的实体不要删了
@Data
class BookSummaryModel{private String goodRateShow;private String poorRateShow;private String poorCountStr;private List<BookModel> book;
}
案例
public static void main(String[] args) {//json对象String json = "{\n" +" \n" +" \"goodRateShow\":99,\n" +" \"poorRateShow\":\"123\",\n" +" \"poorCountStr\":\"500\",\n" +" \n" +" \n" +"\"book\":\n" +" [ {\n" +" \"id\":2,\n" +" \"language\":\"C++\",\n" +" \"edition\":\"two\",\n" +" \"author\":\"李四\"\n" +" },{\n" +" \"id\":1,\n" +" \"language\":\"java\",\n" +" \"edition\":\"one\",\n" +" \"author\":\"张三\"\n" +" }\n" +"]\n" +"}\n" +"\n";final Gson gson = new Gson();final BookSummaryModel bookSummaryModel = gson.fromJson(json, BookSummaryModel.class);//从对象中获取集合final List<BookModel> modelList = bookSummaryModel.getBook();for (BookModel bookModel : modelList) {System.out.println(bookModel.getId()+"\t"+bookModel.getLanguage());}}
另外,Gson还提供了其他JSON处理的方法,如toJson()。