JavaでJackson APIを使ってJsonNodeをArrayNodeに変換する方法
JsonNodeは、JSONツリーモデルを構成するすべてのJSONノードの基底クラスです。一方、ArrayNodeは、JSONコンテンツからマッピングされた配列を表すノードクラスです。JsonNodeをArrayNodeに変換するには、ObjectMapperクラスのreadTree()メソッドで取得したノードをArrayNodeにキャストします。さらに、get()メソッドを使用することで、配列ノード内の指定した要素の値にアクセスできます。
構文
public JsonNode readTree(String content) throws IOException, com.fasterxml.jackson.core.JsonProcessingException
コード例
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.core.JsonProcessingException;
public class JsonNodeToArrayNodeTest {
public static void main(String args[]) throws JsonProcessingException {
String jsonStr = "{\"Technologies\" : [\"Java\", \"Scala\", \"Python\"]}";
ObjectMapper mapper = new ObjectMapper();
ArrayNode arrayNode = (ArrayNode) mapper.readTree(jsonStr).get("Technologies");
if (arrayNode.isArray()) {
for (JsonNode jsonNode : arrayNode) {
System.out.println(jsonNode);
}
}
}
}
実行結果
"Java" "Scala" "Python"
ポイント解説
readTree()メソッドの戻り値はJsonNode型のため、配列として操作するにはArrayNodeへの明示的なキャストが必要です。キャストの前にisArray()メソッドでノードが配列であることを確認しておくと、対象の要素が配列ではなかった場合にスローされるClassCastExceptionを未然に防ぐことができます。このチェックを入れることで、JSONの構造が不定なデータを安全に処理できるようになります。
-
JavaでOpenCVのMatオブジェクトをBufferedImageに変換する方法を解説
OpenCVのimread()メソッドを使って画像を読み込むと、戻り値としてMatオブジェクトが返されます。しかし、このMatオブジェクトの内容をAWTやSwingのウィンドウ上に表示したい場合は、java.awt.image.BufferedImageクラスのオブジェクトへ変換する必要があります。本記事では、MatからBufferedImageへの変換手順を、サンプルコードとともにわかりやすく解説します。MatをBufferedImageに変換する4つのステップ1. MatをMatOfByteにエンコードするまず、画像データを保持する行列(Mat)を、バイト列のマトリックスであるMatOfB
-
【Java入門】ネガティブ画像をポジティブ画像に変換する方法|BufferedImageでピクセル単位のRGB反転を実装
ネガティブ(反転)画像を元のポジティブ画像に戻すには、画像内のすべてのピクセルに対して、赤(R)・緑(G)・青(B)の各値を「255 − 値」で反転させます。透明度を表すアルファ(A)成分はそのまま維持します。この操作は可逆的なため、同じロジックでポジ→ネガ→ポジの往復変換にも対応できます。 ネガ画像からポジ画像への変換手順 画像の読み込み: ImageIO.read() メソッドで対象の画像ファイルを読み込みます。 サイズの取得: getHeight() と getWidth() で画像の高さと幅を取得します。 ピクセル走査: 二重の for ループで画像内の全ピクセルを順番に処理します。