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 .