首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JSON for Java 极速入門:從資料結構到檔案讀寫完整指南

     編輯:Java 相關知識

JSON 簡介

JSON (JavaScript Object Notation) 是輕量級資料交換格式,結構簡單、易讀寫、機器解析高效。兩大核心結構:

  • 物件:{ "key": "value", ... } (對應 Java Map/JSONObject)
  • 陣列:[ "value1", "value2", ... ] (對應 Java List/JSONArray)

值類型:字串、數字、布林、null、物件、陣列 (可巢狀)。

常用庫與 Maven 依賴

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20231013</version>
</dependency>

核心類別:JSONObject、JSONArray、JSONStringer、JSONTokener。

核心操作範例

1. 解析 JSON 字串 → 物件

String json = "{\"name\":\"xiazdong\",\"age\":20}";
JSONObject obj = new JSONObject(json);
String name = obj.getString("name"); // "xiazdong"
int age = obj.getInt("age");         // 20

2. 解析 JSON 陣列

String json = "[{\"name\":\"A\",\"age\":20},{\"name\":\"B\",\"age\":15}]";
JSONArray arr = new JSONArray(json);
for (int i = 0; i < arr.length(); i++) {
    JSONObject item = arr.getJSONObject(i);
    System.out.println(item.getString("name") + ":" + item.getInt("age"));
}

3. 巢狀結構存取

String json = "{\"name\":\"xiazdong\",\"books\":[\"book1\",\"book2\"]}";
JSONObject obj = new JSONObject(json);
String firstBook = obj.getJSONArray("books").getString(0); // "book1"

4. 建構 JSON 字串 (JSONStringer)

JSONStringer js = new JSONStringer();
String json = js.object()
    .key("name").value("xiazdong")
    .key("age").value(20)
    .endObject()
    .toString();
// 產生: {"name":"xiazdong","age":20}

5. 複雜結構建構並寫入檔案

JSONStringer js = new JSONStringer();
JSONObject section = new JSONObject();
section.put("title", "BOOK");

JSONArray signings = new JSONArray();
// signing 1
JSONObject s1 = new JSONObject();
s1.put("author", new JSONObject().put("name", "author-1"));
s1.put("book", new JSONObject().put("title", "book1").put("price", "$11"));
// signing 2
JSONObject s2 = new JSONObject();
s2.put("author", new JSONObject().put("name", "author-2"));
s2.put("book", new JSONObject().put("title", "book2").put("price", "$22"));

signings.put(s1).put(s2);
section.put("signing", signings);

js.object().key("section").value(section).endObject();

try (PrintWriter out = new PrintWriter("output.json")) {
    out.println(js.toString());
}

6. 從檔案讀取 (JSONTokener)

// 讀取 JSONObject
JSONObject obj = new JSONObject(new JSONTokener(new FileReader("data.json")));

// 讀取 JSONArray
JSONArray arr = new JSONArray(new JSONTokener(new FileReader("data.json")));

// 巢狀存取範例
String author = obj.getJSONObject("section")
                   .getJSONArray("signing")
                   .getJSONObject(0)
                   .getJSONObject("author")
                   .getString("name");

最佳實務提醒

  • Java 字串中 JSON 內容建議使用單引號包裹外層,避免雙引號跳脫。
  • JSONObject 的 put 方法支援鏈式呼叫 (obj.put("a",1).put("b",2))。
  • 讀寫檔案時指定編碼 (UTF-8) 避免中文亂碼。
  • 生產環境建議使用 Jackson 或 Gson,功能更豐富、效能更優、支援 POJO 自動映射。

總結

org.json 庫輕量、零依賴、API 直觀,適合快速原型、簡單配置檔處理、Android 早期專案。掌握 JSONObject/JSONArray 解析、JSONStringer 建構、JSONTokener 檔案讀寫四大核心操作,即可應付絕大多數 JSON 處理場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved