Gson解析JSON

1.介绍

Gson是Google提供的处理JSON数据的Java类库,主要用于转换Java对象和JSON对象。

2.依赖



    com.google.code.gson
    gson
    2.8.5

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对象

Gson解析JSON_第1张图片

案例

 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数组转化成指定类型的集合,方法如下: 

Gson解析JSON_第2张图片

 该方法的输入参数类型为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>(){}.getType();
        //转换成集合
        ListfromJson = gson.fromJson(json, listMl);
        for (BookModel bookModel : fromJson) {
            System.out.println(bookModel.getId()+"\t"+bookModel.getLanguage());

        }


    }

5.解析复杂嵌套式的JSON数据

Gson解析JSON_第3张图片

我们再创建一个java实体,之前的实体不要删了

@Data
class  BookSummaryModel{
    private String goodRateShow;
    private  String poorRateShow;
    private String poorCountStr;
    private List 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 modelList = bookSummaryModel.getBook();
        for (BookModel bookModel : modelList) {
            System.out.println(bookModel.getId()+"\t"+bookModel.getLanguage());
        }

    }

另外,Gson还提供了其他JSON处理的方法,如toJson()。 

你可能感兴趣的:(#,java工具类,json)