JSON 官網:http://www.json.org/
在官網頁面的下方,是 JSON 數據格式在各個語言中的實現方法和操作類庫
找到 Java 語言,選擇 google-gson (成熟,且操作簡單,被大多數開發者所使用的)
google-gson 下載鏈接:https://github.com/google/gson
截止 2017/3/30 最新版本 gson-2.8.0 下載鏈接:
http://download.csdn.net/detail/siwuxie095/9799544
工程名:TestReadJSON
包名:com.siwuxie095.json
類名:ReadJSON.java
打開資源管理器,在工程 TestReadJSON 文件夾下,放入
一個 JSON 文件:test.json
test.json 的內容:
package com.json; import java.io.FileNotFoundException; import java.io.FileReader; import com.google.gson.JsonArray; import com.google.gson.JsonIOException; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.JsonSyntaxException; public class ReadJSON { /** * 通過解析器將test.json轉換成JsonObject * * @param args */ public static void main(String[] args) { //將 test.json 的數據轉換成 JSON 對象 //需要創建一個解析器,可以用來解析字符串或輸入流 JsonParser parser=new JsonParser(); try { //創建一個JSON對象,接收parser解析后的返回值 //使用parse()方法,傳入一個Reader對象,返回值是JsonElement類型 //因為要讀取文件,所以傳入一個FileReader //JsonObject是JsonElement的子類,所以需要強轉 //有異常拋出,使用 try catch 捕獲 JsonObject object=(JsonObject) parser.parse(new FileReader("test.json")); //先將兩個外部的屬性輸出 category 和 pop //先 get 到名稱(鍵),返回的是 JsonElement,再 getAs 轉換成什么類型的值 //依據 json 格式里的數據類型 System.out.println("category="+object.get("category").getAsString()); System.out.println("pop="+object.get("pop").getAsBoolean()); //接着讀取test.json里的JSON數組,名稱是languages(鍵) //創建一個JsonArray JsonArray array=object.get("languages").getAsJsonArray(); for (int i = 0; i < array.size(); i++) { //分隔線 System.out.println("-----------------"); //創建一個JsonObject,從array的下標獲取,get() 返回JsonElement類型 //這里不用強轉,而用 getAsJsonObject() 進行轉換 JsonObject subObject=array.get(i).getAsJsonObject(); System.out.println("id="+subObject.get("id").getAsInt()); System.out.println("name="+subObject.get("name").getAsString()); System.out.println("ide="+subObject.get("ide").getAsString()); } } catch (JsonIOException e) { e.printStackTrace(); } catch (JsonSyntaxException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } } }