将BufferedReader转换为jsonobject
Contents
1. 概述
在本快速教程中,我们将展示如何使用两种不同的方法将BufferedReader 转换为JSONObject 。
2. 依赖
在开始之前,我们需要将org.json 依赖添加到我们的pom.xml中:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20200518</version>
</dependency>
3. JSONTokener
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
现在,让我们看看另一种获取JSONObject的方法,首先将BufferedReader转换为String。
在旧版本的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。