«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. Первое преобразование в строку
Теперь давайте рассмотрим другой подход для получения JSONObject путем преобразования BufferedReader в строку.
Этот подход можно использовать при работе со старой версией 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 в строку, а затем используем конструктор JSONObject для преобразования строки в объект JSON.
5. Заключение
В этой статье мы рассмотрели два разных способа преобразования BufferedReader в JSONObject на простых примерах. Несомненно, последняя версия org.json обеспечивает аккуратный и чистый способ преобразования BufferedReader в JSONObject с меньшим количеством строк кода.
Как всегда, полный исходный код примера доступен на GitHub.
«
As always, the full source code of the example is available over on GitHub.