JavaとJacksonでJsonGeneratorの設定を取得する方法
JacksonのJsonGeneratorクラスは、メモリ上にオブジェクトモデルを構築することなく、JSONデータをストリームとして書き出す役割を担います。オン/オフを切り替え可能な設定の一覧は、列挙型(enum)であるJsonGenerator.Featureに定義されています。この列挙型には、自身のすべての定数を配列として返す静的メソッドvalues()が用意されており、これを利用することで全設定を簡単に走査できます。
構文
public static enum JsonGenerator.Feature extends Enum<JsonGenerator.Feature>
コード例
import java.io.*;
import com.fasterxml.jackson.core.*;
public class JsonGeneratorSettingsTest {
public static void main(String[] args) throws IOException {
StringWriter writer = new StringWriter();
JsonFactory jsonFactory = new JsonFactory();
JsonGenerator jsonGenerator = jsonFactory.createGenerator(writer);
for(JsonGenerator.Feature feature : JsonGenerator.Feature.values()) {
boolean result = jsonGenerator.isEnabled(feature);
System.out.println(feature.name() + ":" + result);
}
jsonGenerator.close();
}
}上記の例では、まずStringWriterを出力先としてJsonFactoryからJsonGeneratorを生成しています。その後、values()メソッドで取得したすべてのFeature定数に対してisEnabled()メソッドを呼び出し、各設定が現在有効かどうかをコンソールに出力しています。最後にclose()メソッドでジェネレータを閉じ、リソースを解放します。
出力結果
AUTO_CLOSE_TARGET:true AUTO_CLOSE_JSON_CONTENT:true FLUSH_PASSED_TO_STREAM:true QUOTE_FIELD_NAMES:true QUOTE_NON_NUMERIC_NUMBERS:true ESCAPE_NON_ASCII:false WRITE_NUMBERS_AS_STRINGS:false WRITE_BIGDECIMAL_AS_PLAIN:false STRICT_DUPLICATE_DETECTION:false IGNORE_UNKNOWN:false
出力結果を見ると、AUTO_CLOSE_TARGETやQUOTE_FIELD_NAMESなどの設定はデフォルトで有効(true)になっている一方、ESCAPE_NON_ASCIIやWRITE_NUMBERS_AS_STRINGSなどは無効(false)になっていることが確認できます。必要に応じてconfigure()メソッドやenable()/disable()メソッドを使用することで、これらの設定を動的に変更できます。
-
Javaでフォルダ内のディレクトリ(フォルダ)のみを取得する方法
Javaで特定のフォルダに含まれるファイルではなく、ディレクトリ(サブフォルダ)だけを取得したいケースはよくあります。本記事では、代表的な2つの方法——FileFilterインターフェースを使う方法と、NIOのFiles.walk()を使う方法——をサンプルコード付きで解説します。listFiles()メソッドとFileFilterの基本FileクラスのlistFiles()メソッドは、そのFileオブジェクトが表すパスに含まれるすべてのファイルおよびディレクトリの抽象パス名を、配列として返します。ここで活躍するのがFileFilterインターフェースです。FileFilterはパス名をフィル
-
JavaでJsonPointerインターフェースを使用してJSONのキーの値を取得する方法
JSONPointerは、JSONドキュメント内の特定のキーの値へアクセスするための文字列構文を定義した標準規格です。Jsonクラスの静的ファクトリメソッドであるcreatePointer()を呼び出すことで、JSONPointerのインスタンスを生成できます。JSONPointerでは、すべての文字列構文がスラッシュ「/」で始まるのが特徴です。キーの値を取得するには、JSONPointerオブジェクトに対してgetValue()メソッドを呼び出します。 前提条件 この記事のコードを実行するには、Java EE / Jakarta EEに含まれるJSON Processing(JSON-P)の