Перейти к основному содержимому

Преобразование BufferedReader в JSONObject

· 2 мин. чтения

1. Обзор

В этом кратком руководстве мы собираемся показать, как преобразовать BufferedReader в JSONObject , используя два разных подхода .

2. Зависимость

Прежде чем мы начнем, нам нужно добавить зависимость org.json в наш pom.xml :

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

3. Токенер JSON

Последняя версия библиотеки 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 в 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 .

5. Вывод

В этой статье мы рассмотрели два разных способа преобразования BufferedReader в JSONObject на простых примерах. Несомненно, последняя версия org.json обеспечивает аккуратный и чистый способ преобразования BufferedReader в JSONObject с меньшим количеством строк кода.

Как всегда, полный исходный код примера доступен на GitHub .