[解決済み] Jackson JsonNodeをArrayNodeにキャストせずに変換する方法は?
2022-05-31 21:41:18
質問
JSONライブラリをorg.jsonからJacksonに変更するので、以下のコードをマイグレートしたいです。
JSONObject datasets = readJSON(new URL(DATASETS));
JSONArray datasetArray = datasets.getJSONArray("datasets");
今度はJacksonで以下のようになりました。
ObjectMapper m = new ObjectMapper();
JsonNode datasets = m.readTree(new URL(DATASETS));
ArrayNode datasetArray = (ArrayNode)datasets.get("datasets");
しかし、私はそこのキャストが好きではありません。
ClassCastException
?
に相当するメソッドはありますか?
getJSONArray
で
org.json
で、配列でない場合に適切なエラーハンドリングをするようにできますか?
どのように解決するのですか?
はい、Jackson マニュアル パーサーの設計は、他のライブラリとはかなり異なっています。特に、以下の点にお気づきでしょう。
JsonNode
には、他の API の配列ノードに通常関連付けられるほとんどの関数があります。そのため、配列ノードにキャストする必要はありません。
ArrayNode
にキャストして使用する必要はありません。以下はその例である。
JSONです。
{
"objects" : ["One", "Two", "Three"]
}
コードです。
final String json = "{\"objects\" : [\"One\", \"Two\", \"Three\"]}";
final JsonNode arrNode = new ObjectMapper().readTree(json).get("objects");
if (arrNode.isArray()) {
for (final JsonNode objNode : arrNode) {
System.out.println(objNode);
}
}
出力します。
"ワン"。
"ツー"
"スリー"
を使用することに注意してください。
isArray
を使用していることに注意してください。これは、反復処理の前にノードが実際に配列であるかどうかを確認するためです。データ構造に絶対的な自信がある場合はこのチェックは必要ありませんが、必要な場合は利用できます(これは他のほとんどのJSONライブラリと変わりません)。
関連
-
Spring Boot による HTTPS アクセスの設定
-
java Mail send email smtp is not authenticated by TLS encryption solution.
-
JQuery DataTable 详解
-
テストが見つかりませんでした
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] Jackson を使用してオブジェクトの配列をデシリアライズする方法
-
[解決済み] シリアライズ中にフィールドの値が NULL の場合、それを無視するように Jackson に指示するにはどうすればよいですか?
-
[解決済み】配列に何かを追加する方法は?
-
[解決済み】なぜJavaの+=, -=, *=, /=複合代入演算子はキャスティングを必要としないのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Java Exceptionが発生しました エラー解決
-
ファインバグタイプ
-
eclipse で「アクセス制限: タイプ 'HttpServer' は API ではありません」というプロンプトが表示される。
-
Enumとの組み合わせでswitchの使い方を一度覚えるために必要な定数式
-
this()の呼び出しはコンストラクタ本体の最初の文でなければならない 例外解決と原因分析
-
プロジェクトの依存関係を解決できなかった 解決
-
Eclipseでプロジェクトエクスプローラービューとパッケージエクスプローラービューを使う
-
spring-boot 401 このリソースにアクセスするには完全な認証が必要です エラー解決
-
javaでよく使われる英単語
-
Java(1)仕上げの基本概念+eclipseのインストール構成