[解決済み] Jacksonでシリアライズ(JSON) - "No serializer found "と表示される?
2022-02-02 18:59:03
質問
Jackson を使用して非常に単純なオブジェクトをシリアライズしようとすると、例外が発生します。このエラーは
org.codehaus.jackson.map.JsonMappingException: のシリアライザが見つかりませんでした。 クラスMyPackage.TestAとプロパティがありません。 BeanSerializer を作成するために発見された(例外を回避するために SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) )。
以下は、シリアライズするための簡単なクラスとコードです。
なぜこのエラーが発生するのか、どなたか教えてください。
public class TestA {
String SomeString = "asd";
}
TestA testA = new TestA();
ObjectMapper om = new ObjectMapper();
try {
String testAString = om.writeValueAsString(testA); // error here!
TestA newTestA = om.readValue(testAString, TestA.class);
} catch (JsonGenerationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
解決方法は?
すでに説明したように、デフォルトの構成では
ObjectMapper
インスタンスは、パブリックフィールドであるか、パブリックゲッター/セッターを持つプロパティにのみアクセスするようになっています。 フィールドをパブリックにしたり、パブリックなゲッター/セッターを提供したりするためにクラス定義を変更する代わりに、(基礎となる
VisibilityChecker
) 別のプロパティの可視化ルールを設定します。 Jackson 1.9 では
ObjectMapper.setVisibility()
という便利なメソッドがあります。 元の質問の例では、私はおそらく次のように設定します。
myObjectMapper.setVisibility(JsonMethod.FIELD, Visibility.ANY);
Jackson >2.0用です。
myObjectMapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);
より詳細な情報や関連する設定オプションの詳細については、以下を確認することをお勧めします。
のJavaDocsを参照してください。
ObjectMapper.setVisibility()
.
関連
-
[解決済み】Hibernateエラー:同じ識別子値を持つ別のオブジェクトがすでにセッションに関連付けられました。
-
[解決済み】このコンパイルユニットは名前付きモジュールに関連しているため、名前付きパッケージeclipseを宣言する必要があります。
-
[解決済み】不正なエスケープ文字"㊧"について
-
[解決済み】Java、"変数名 "を変数に解決することができない
-
[解決済み】Eclipseがエラーメッセージ "Java was started but returned exit code = 1" を返す
-
[解決済み】Javaでユーザー入力を待機させる方法
-
[解決済み】Eclipseで「公開型 <<classname>> は独自のファイルで定義する必要があります」エラー【重複あり
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] UnixツールでJSONをパースする
-
[解決済み] Jackson JSONとHibernate JPAによる無限再帰の問題
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Android Studio クラス org.codehaus.groovy.runtime.InvokerHelper を初期化できませんでした。
-
[解決済み】エラー:配列または java.lang.Iterable のインスタンスに対してのみ反復処理を行うことができます。
-
[解決済み】Javaで無限大を実装する方法とは?
-
[解決済み】デフォルトのキーストアファイルが存在しない?
-
[解決済み】Eclipseで「JUnitテストが見つかりませんでした。
-
[解決済み】ソースルート外のJavaファイル intelliJ
-
[解決済み】純粋なJUnitテストにVisibleForTestingを使用する方法
-
[解決済み] Hide Utility Class Constructor : ユーティリティクラスはパブリックまたはデフォルトコンストラクタを持つべきではありません。
-
[解決済み] java.sql.SQLException を取得しました。ResultSet が終了した後の操作は許可されません。
-
[解決済み] JavaでSSLピアが正しくシャットダウンされない