JSON 解析之 GSON

1_GSON 框架技術
1)特色:編碼簡潔,谷歌官方推薦 java

2)下載地址:https://mvnrepository.com/artifact/com.google.code.gson/gson json


1.1_將 json 格式的字符串{}轉換爲 Java 對象
1)用到的 API <T> T fromJson(String json, Class<T> classOfT);//將 json 對象轉換爲 Java 對象 的方法 注意:要求 json 對象中的 key 的名稱與 java 對象對應的類中的屬性名要相同
2)使用步驟數組

(1)將 Gson 的 jar 包導入到項目中 框架

(2)建立Gson對象 : Gson gson = new Gson(); 測試

(3)經過建立的Gson對象調用fromJson()方法,返回該JSON數據對應的Java對象 ShopInfo shopInfo = gson.fromJson(json, ShopInfo.class);google

3)測試數據 編碼

{
    "id":2,
    "name":"大蝦",
    "price":12.3,
    "imagePath":"http://192.168.10.165:8080/L05_Server/images/f1.jpg"
}

4)例子spa

 // (1) 將json格式的字符串{ }轉換爲 Java對象
    private void jsonToJavaObject() {

        // 1 獲取或建立 json
        String json = "{\n" + "\t\"id\":2, \"name\":\"大蝦\", \n" + "\t\"price\":12.3, \n" +
                "\t\"imagePath\":\"http://192.168.10.165:8080/L05_Server/images/f1.jpg\"\n" + "}\n";
        // 2 解析 json
        Gson gson = new Gson();
        ShopInfo shopInfo = gson.fromJson(json, ShopInfo.class);
        // 3 顯示 JSON數據
        tv_native_orignal.setText(json);
        tv_native_last.setText(shopInfo.toString());
    }

1.2_將 json 格式的字符串[]轉換爲 Java 對象的 List
1)用到的 API T fromJson(String json, Type typeOfT);//將 json 數組轉換爲 Java 對象的 list code

注意:要求 json 對象中的 key 的名稱與 java 對象對應的類中的屬性名要相同

2)使用步驟 對象

(1)將 Gson 的 jar 包導入到項目中

(2)建立Gson對象 : Gson gson = new Gson();

(3)經過建立的Gson對象調用fromJson()方法,返回該JSON數據對應的Java集合: List<ShopInfo> shops = gson.fromJson(json, new TypeToken<List<ShopInfo>>() {}.getType());

3)測試數據 

[
    {
        "id":1,
        "imagePath":"http://192.168.10.165:8080/f1.jpg",
        "name":"大蝦1",
        "price":12.3
    },
    {
        "id":2,
        "imagePath":"http://192.168.10.165:8080/f2.jpg",
        "name":"大蝦2",
        "price":12.5
    }
]

4)例子

  //(2) 將 json格式的字符串 [] 轉換爲 Java對象的 List
    private void jsonToJavaList() {

        // 1 獲取或建立 json
        String json = "[\n" + "    {\n" + "        \"id\": 1,\n" + "        \"imagePath\": \"http://192.168.10.165:8080/f1.jpg\",\n"
                + "        \"name\": \"大蝦 1\",\n" + "        \"price\": 12.3\n" + "    },\n" + "    {\n" + "        \"id\": 2,\n"
                + "        \"imagePath\": \"http://192.168.10.165:8080/f2.jpg\",\n" + "        \"name\": \"大蝦 2\",\n"
                + "        \"price\": 12.5\n" + "    }\n" + "]";
        // 2 解析 json
        Gson gson = new Gson();
        List<ShopInfo> shops = gson.fromJson(json, new TypeToken<List<ShopInfo>>() {
        }.getType());

        // 3 顯示JSON數據
        tv_native_orignal.setText(json);
        tv_native_last.setText(shops.toString());
    }

1.3_將 Java 對象轉換爲 json 字符串{}
1)用到的 API String toJson(Object src);

2)使用步驟

(1)將 Gson 的 jar 包導入到項目中

(2)建立Gson對象 : Gson gson = new Gson();

(3)經過建立的Gson對象調用toJson()方法,返回json數據:

  ShopInfo shop = new ShopInfo(1, "鮑魚", 250.0, "");

  String json = gson.toJson(shop); 

3)例子

/**
     * (3) 將 Java對象轉換爲 json字符串 {}
     */
    private void javaToJsonObject() {
        // 1 獲取或建立 Java 對象    
        ShopInfo shop = new ShopInfo(1, "鮑魚", 250.0, "");

        // 2 生成 JSON數據
        Gson gson = new Gson();
        String json = gson.toJson(shop);

        // 3 展現 json數據
        tv_native_orignal.setText(shop.toString());
        tv_native_last.setText(json);
    }

1.4_將 Java 對象的 List 轉換爲 json 字符串[]
1)用到的 API String toJson(Object src);

2)使用步驟

(1)將 Gson 的 jar 包導入到項目中

(2)建立Gson對象 : Gson gson = new Gson();

(3)經過建立的Gson對象調用toJson()方法,返回json數據:

  List<ShopInfo> shops = new ArrayList<>();

   String json = gson.toJson(shops);

3)例子

  /**
     * (4) 將Java對象的List轉換爲json字符串 []
     */
    private void javaToJsonList() {
        // 1 獲取或建立 Java 集合     
        List<ShopInfo> shops = new ArrayList<>();
        ShopInfo baoyu = new ShopInfo(1, "鮑魚", 250, "baoyu");
        ShopInfo haisen = new ShopInfo(2, "海蔘", 251, "haisen");
        shops.add(baoyu);
        shops.add(haisen);

        // 2 生成 JSON數據
        Gson gson = new Gson();
        String json = gson.toJson(shops);

        // 3 展現 json數據
        tv_native_orignal.setText(shops.toString());
        tv_native_last.setText(json);
    }
相關文章
相關標籤/搜索