1. 概要

このクイックチュートリアルでは、2つの異なるアプローチを使用してBufferedReaderをJSONObject変換する方法を示します。

2. 依存

開始する前に、org.json依存関係pom.xmlに追加する必要があります。

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

3. JSONTokener

The 最新バージョンのorg.jsonライブラリには、JSONTokenerコンストラクターが付属しています。 リーダーを直接受け入れますパラメータとして。

それでは、それを使用してBufferedReaderJSONObjectに変換しましょう。

@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. 最初に文字列に変換します

それでは、最初に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を文字列に変換してから、JSONObjectコンストラクターを使用して文字列をJSONObjectに変換しています。

5. 結論

この記事では、簡単な例を使用して、BufferedReaderJSONObjectに変換する2つの異なる方法を見てきました。 間違いなく、最新バージョンの org.json は、BufferedReaderをより少ないコード行でJSONObjectに変換するためのすっきりとしたクリーンな方法を提供します。

いつものように、例の完全なソースコードは、GitHubから入手できます。