Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaのJSON-lib APIを使ってコレクションをJSON配列に変換する方法

net.sf.json.JSONArrayは、値の順序付きシーケンス(ordered sequence)を表すクラスです。外部形式としては、角括弧 [ ] で囲まれ、各値がカンマで区切られた文字列として表現されます。一方、内部形式では get() メソッドや opt() メソッドを使ってインデックスを指定して値にアクセスでき、element() メソッドによって値の追加や置換を行うことができます。

JSONArrayに格納できる値の型は、BooleanJSONArrayJSONObjectNumberString、および JSONNull オブジェクトなど多岐にわたります。

JSON-libライブラリでは、JSONSerializer.toJSON() メソッドを使用することで、Listなどのコレクションを簡単にJSONArrayへ変換できます。以下に具体的なサンプルコードを示します。

サンプルコード

import java.util.*;
import net.sf.json.JSONArray;
import net.sf.json.JSONSerializer;

public class ConvertCollectionToJsonArrayTest {
    public static void main(String[] args) {
        // 文字列のListをJSONArrayに変換
        List<String> strList = Arrays.asList("India", "Australia", "England", "South Africa");
        JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(strList);
        System.out.println(jsonArray.toString(3)); // インデント3で整形出力

        // 様々な型を含むListをJSONArrayに変換
        List<Object> dataList = new ArrayList<Object>();
        dataList.add("List Data");
        dataList.add(50);
        dataList.add(99);
        dataList.add(50.65);
        dataList.add(true);
        dataList.add(Arrays.asList("X", "Y", "Z")); // ネストしたListも可能

        JSONArray jsonArray2 = (JSONArray) JSONSerializer.toJSON(dataList);
        System.out.println(jsonArray2.toString(3));
    }
}

実行結果

[
    "India",
    "Australia",
    "England",
    "South Africa"
]
[
    "List Data",
    50,
    99,
    50.65,
    true,
    [
        "X",
        "Y",
        "Z"
    ]
]

ポイントまとめ

  • JSONSerializer.toJSON() にListを渡すと、戻り値は Object 型なので (JSONArray) へキャストして受け取ります。
  • toString(int indentFactor) を使うと、指定したインデント幅で整形された(pretty printされた)JSON文字列を取得できます。
  • Listの中に別のListや数値・真偽値などを混在させても、それぞれ適切なJSONの型へ自動的に変換されます。

MavenでJSON-libを利用する場合の依存関係

<dependency>
    <groupId>net.sf.json-lib</groupId>
    <artifactId>json-lib</artifactId>
    <version>2.4</version>
    <classifier>jdk15</classifier>
</dependency>

このように、JSON-libの JSONSerializer クラスを活用すれば、JavaのコレクションからJSON配列への変換を最小限のコードで実現できます。

  1. JavaでJSON配列を作成する方法をわかりやすく解説

    JSON配列とは、角括弧で囲まれた値の順序付きコレクションのことです。具体的には「[」で始まり「]」で終わり、配列内の各値はカンマ(,)で区切られます。JSON配列のサンプル{ books: [Java, JavaFX, Hbase, Cassandra, WebGL, JOGL] }json-simpleは、JSONオブジェクトを処理するための軽量ライブラリです。このライブラリを使えば、JavaプログラムからJSONドキュメントの内容を読み取ったり、書き込んだりすることができます。json-simpleのMaven依存関係json-simpleライブラリを使用するには、まずpom.x

  2. JavaのMapをJSONに変換する3つの方法(Jackson・Gson・org.json)

    JavaのMap(マップ)をJSONに変換する方法はいくつかあります。Javaでは、配列やMapとJSONの相互変換を行う場面が非常に多く、Web APIとのデータ連携などでも欠かせない処理です。 この記事では、代表的なライブラリであるJackson、Gson、org.jsonを使用して、JavaのMapをJSONに変換する3つの具体例をサンプルコード付きで解説します。 Jacksonを使ってJavaのMapをJSONに変換する 最初の例では、Jackson Core と Jackson Databind を使ってJavaのMapをJSONに変換します。 Jacksonライブラリを使用するには