使用Java讀取JSON數據


 

 

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(); 
} 
} 
   
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM