在 Java 開發中,我們經常需要從 API 或者其它后端服務中獲取 JSON 格式的數據。本文將介紹如何使用 Java 獲取 JSON 字符串。
首先,我們需要引入 JSON 解析庫,這里我們使用比較常見的
org.json庫。該庫的代碼可以通過 Maven 或 Gradle 進行依賴提取。
<dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20190722</version> </dependency>
然后,我們就可以通過 Java 中的 URL 或者 HttpUrlConnection 來獲取 JSON 字符串。例如:
URL url = new URL("http://example.com/api/detail?id=123"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("Accept", "application/json"); if (conn.getResponseCode() != 200) { throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode()); } BufferedReader br = new BufferedReader(new InputStreamReader( (conn.getInputStream()))); String output; while ((output = br.readLine()) != null) { System.out.println(output); } conn.disconnect();
其中,我們需要注意設置
"Accept", "application/json"請求頭,表示需要接收 JSON 格式的數據,同時需要判斷 HTTP 狀態碼是否為 200,如果不是,需要拋出異常。
最后,我們可以使用 JSONObject 或者 JSONArray 等類庫對 JSON 字符串進行解析,例如:
String jsonString = "{\"name\": \"John\", \"age\": 18, \"hobbies\": [\"swimming\", \"music\"]}"; JSONObject jsonObj = new JSONObject(jsonString); String name = jsonObj.getString("name"); //獲取 name 字段的值,即 "John" int age = jsonObj.getInt("age"); //獲取 age 字段的值,即 18 JSONArray hobbies = jsonObj.getJSONArray("hobbies"); //獲取 hobbies 字段的 JSONArray 對象 String hobby1 = hobbies.getString(0); //獲取 hobbies[0] 的值,即 "swimming" String hobby2 = hobbies.getString(1); //獲取 hobbies[1] 的值,即 "music"
通過上述代碼,我們可以得到 JSON 字符串中各個字段的值,以便進行后續的處理。