1. 概述
本快速教程將演示如何使用兩種不同的方法將 BufferedReader 轉換為 JSONObject。
2. 依賴
在開始之前,我們需要將 org.json 依賴添加到我們的 pom.xml 中:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20240303</version>
</dependency>3. JSONTokener
The 最新版本的 org.json 庫 包含一個 JSONTokener 構造函數。它直接接受一個 Reader 作為參數。
因此,讓我們使用該構造函數將一個 BufferedReader 轉換為一個 JSONObject:
@Test
public void givenValidJson_whenUsingBufferedReader_thenJSONTokenerConverts() {
byte[] b = "{ \"name\" : \"John\", \"age\" : 18 }".getBytes(StandardCharsets.UTF_8);
InputStream is = new ByteArrayInputStream(b);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));
JSONTokener tokener = new JSONTokener(bufferedReader);
JSONObject json = new JSONObject(tokener);
assertNotNull(json);
assertEquals("John", json.get("name"));
assertEquals(18, json.get("age"));
}
4. 首先轉換為String
現在,讓我們看看如何通過首先將BufferedReader轉換為String來獲取JSONObject的方法。
這種方法可用於在舊版本的org.json中工作時。
@Test
public void givenValidJson_whenUsingString_thenJSONObjectConverts()
throws IOException {
// ... retrieve BufferedReader<br />
StringBuilder sb = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
sb.append(line);
}
JSONObject json = new JSONObject(sb.toString());
// ... same checks as before
}
在這裏,我們正在將 BufferedReader轉換為 String,然後使用 JSONObject構造函數將 String轉換為 JSONObject
5. 結論
在本文中,我們看到了兩種將 BufferedReader 轉換為 JSONObject 的方法,並提供了簡單的示例。毫無疑問,最新版本的 org.json 提供了將 BufferedReader 轉換為 JSONObject 的簡潔而清晰的方式,並且代碼行數更少。