Gson常用方法

在開發中我們經常通過Gson來解析字符串,轉化爲所需要的Java對象。使用到它的地方很多,常用的幾個方法總結如下:

1.字符串轉實體類

public <T> T fromJson(JsonElement json,
                      Class<T> classOfT)
           throws JsonSyntaxException

This method deserializes the Json read from the specified parse tree into an object of the specified type.

示例:

    /**
     * str ---> bean
     */
    private void str2bean(){
        String str = "{'address':'xxx街xxx號','deptList':[{'employeeNum':'0','name':'部門0','task':'研發0'},{'employeeNum':'10','name':'部門1','task':'研發1'},{'employeeNum':'20','name':'部門2','task':'研發2'}],'name':'xxx公司'}";
        Company cpy = new Gson().fromJson(str, Company.class);
        Log.e("bean", cpy.toString());
    }

2.實體類轉字符串

String  toJson(Object src)

This method serializes the specified object into its equivalent Json representation.
示例:

    /**
     * bean ---> Json字符串
     */
    private void bean2str(){
        Company cpy = new Company();
        List<Department> list = new ArrayList<Department>();

        for(int i=0; i<3;i++){
            Department dpt = new Department();
            dpt.setName("部門"+i);
            dpt.setEmployeeNum("" + i * 10);
            dpt.setTask("研發"+i);

            list.add(dpt);
        }

        cpy.setName("xxx公司");
        cpy.setAddress("xxx街xxx號");
        cpy.setDeptList(list);

        String str = new Gson().toJson(cpy);
        Log.e("Company", str);
    }
    // {"address":"xxx街xxx號","deptList":[{"employeeNum":"0","name":"部門0","task":"研發0"},{"employeeNum":"10","name":"部門1","task":"研發1"},{"employeeNum":"20","name":"部門2","task":"研發2"}],"name":"xxx公司"}

3.字符串轉JsonObject

JsonElement parse(String json) 

Parses the specified JSON string into a parse tree
示例:

    /**
     * str ---> JsonObject
     */
    private void str2JsonObject() {
        String str = "{'address':'xxx街xxx號','deptList':[{'employeeNum':'0','name':'部門0','task':'研發0'},{'employeeNum':'10','name':'部門1','task':'研發1'},{'employeeNum':'20','name':'部門2','task':'研發2'}],'name':'xxx公司'}";

        JsonObject returnData = new JsonParser().parse(str).getAsJsonObject();
        Log.e("JsonObject", returnData.toString());
        //{"address":"xxx街xxx號","deptList":[{"employeeNum":"0","name":"部門0","task":"研發0"},{"employeeNum":"10","name":"部門1","task":"研發1"},{"employeeNum":"20","name":"部門2","task":"研發2"}],"name":"xxx公司"}
    }

4.字符串轉JsonArray

    /**
     * str ---> JsonArray
     */
    private void str2JsonArray() {
        String arrStr = "[{'employeeNum':'0','name':'部門0','task':'研發0'},{'employeeNum':'10','name':'部門1','task':'研發1'},{'employeeNum':'20','name':'部門2','task':'研發2'}]";
        JsonArray jsArray = new JsonParser().parse(arrStr).getAsJsonArray();
        Log.e("JsonArray", jsArray.get(0).getAsJsonObject().get("name").getAsString());
    }

5.字符串轉JsonArray實體

    /**
     * str ---> JsonArrayBean
     */
    private void str2JsonArrayBean(){
        String arrStr = "[{'employeeNum':'0','name':'部門0','task':'研發0'},{'employeeNum':'10','name':'部門1','task':'研發1'},{'employeeNum':'20','name':'部門2','task':'研發2'}]";

        Gson gson = new Gson();
        JsonParser parser = new JsonParser();
        JsonArray jsArray = parser.parse(arrStr).getAsJsonArray();

        ArrayList<Department> dptList = new ArrayList<Department>();

        for(JsonElement obj : jsArray){
            Department dpt = gson.fromJson( obj , Department.class);
            dptList.add(dpt);
            Log.e("Dpt", dpt.toString());
        }
    }

涉及到的測試Java實體如下:

package com.example.gsontest;

import java.util.List;

public class Company {
    private String name;
    private String address;
    private List<Department> deptList;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public List<Department> getDeptList() {
        return deptList;
    }

    public void setDeptList(List<Department> deptList) {
        this.deptList = deptList;
    }
}
package com.example.gsontest;

public class Department {
    private String name;
    private String employeeNum;
    private String task;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmployeeNum() {
        return employeeNum;
    }

    public void setEmployeeNum(String employeeNum) {
        this.employeeNum = employeeNum;
    }

    public String getTask() {
        return task;
    }

    public void setTask(String task) {
        this.task = task;
    }

}
發佈了78 篇原創文章 · 獲贊 49 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章