Gson的使用

在說GSON前,先說一下這個maven和Junit.

maven這個工具確實挺好用的,以前我都是用maven寫個pom.xml文件然後下載到文件夾裏,再buildPath,但這次用idea的maven工程,直接吧需要的jar包放在pom文件下然後ctrl+S就自動給我導入jar包完畢了,不錯。

既然用的maven,junit用的就是最新版,不過這4.11這個版本增加了新的jar包,需要新的jar包(hamcrest-all)下面是我的pom.xml

    <dependencies>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.2.4</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.hamcrest/hamcrest-all -->
        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-all</artifactId>
            <version>1.3</version>
            <scope>test</scope>
        </dependency>
首先貼一下Gson的簡單使用。Gson提供了fromJson() 和toJson() 兩個直接用於解析和生成的方法。這兩個方法爲我們提供了很方便的序列化和反序列化。但下面的只是針對於基礎數據類型的操作。

    Gson gson = new Gson();
    @Test
    public void test() {
        String hello = gson.toJson("Hello");
        String num = gson.toJson(123);
        Student stu = new Student("zhangsan", 22);
        String cla = gson.toJson(stu);
        System.out.println(hello);
        System.out.println(num);
        System.out.println(cla);
        Student newStu = gson.fromJson(cla, Student.class);
        System.out.println(newStu.toString());
    }

下面是List的操作

    @Test
    public void testArray() {
        Room room = new Room();
        room.addStudent();
        System.out.println(room.getSize());
        String roomString = gson.toJson(room);
        System.out.println(roomString);
        Room room2 = gson.fromJson(roomString, Room.class);
        System.out.println(room2.toString());
    }
最後就是我想說的,Gson有個特別的地方,就是他能吧不知道的數據轉換成List<Map>形式,這樣用起來就很方便了下面看示例。


    @Test
    public void testList() {
        List<Room> roomList = new ArrayList<Room>();
        for (int i = 0; i < 100; i++) {
            Room room = new Room();
            room.addStudent();
            roomList.add(room);
        }
        String roomListString = gson.toJson(roomList);
        System.out.println(roomListString + "\n");
        List<Room> roomList2 = gson.fromJson(roomListString, ArrayList.class);
        roomListString = gson.toJson(roomList2);
        System.out.println(roomListString + "\n");


        List<Map<String, Object>> list = (List<Map<String, Object>>) gson.fromJson(roomListString, ArrayList.class);

        System.out.println(list.size());
        System.out.println(list.get(0).get("stuList"));
        for (String key : list.get(1).keySet()) {
            System.out.print(key);
        }

    }







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章