123

fail_on_empty beansjackson 2.1を使用して、エラーメッセージで無効にしたいと思われることを無効にするにはどうすればよいですか?

これは世界で最も単純なことだと思いますが、それは遅く、簡単なチュートリアルや、から特に明白なものを見つけることができませんでしたapiSerializationFactory?なぜ彼らはそれをとても直感的でなくして、それからエラーメッセージをとても簡単に見えるようにするのでしょうか?

エラーメッセージが好きですが、つまり、NPEよりも優れています。

アノテーションを使用してこれを行う方法があると思いますが、私が行っている単純な作業にアノテーションを使用することにまったく熱心ではありません!

4

14 に答える 14

146

これは、クラスごとまたはグローバルに実行できると思います。

クラスごとに、クラス宣言の上に @JsonSerialize を試してください。

マッパーの例を次に示します。

ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
// do various things, perhaps:
String someJsonString = mapper.writeValueAsString(someClassInstance);
SomeClass someClassInstance = mapper.readValue(someJsonString, SomeClass.class)

以下の StackOverflow リンクにも、Spring プロジェクトの例があります。

REST と Jersey については、頭から覚えていませんが、似ていると思います。


私が掘り起こしたいくつかのリンク: (Codehaus がシャットダウンしたため、最初のリンクを編集しました)。

于 2013-03-07T02:20:10.533 に答える
67

Spring Boot を使用している場合は、application.properties ファイルで次のプロパティを設定できます。 spring.jackson.serialization.FAIL_ON_EMPTY_BEANS=false

于 2018-08-02T09:28:15.377 に答える
25

クラスにパブリック メソッド/プロパティが含まれていない場合も、同じ問題が発生する可能性があります。私は通常、API リクエストとレスポンス専用の DTO をパブリックとして宣言していますが、あるケースではメソッドもパブリックにするのを忘れていました。これがそもそも「空の」Bean の原因でした。

于 2014-01-07T13:18:57.200 に答える
13

@JsonIgnoreProperties(ignoreUnknown=true)クラスで未定義のフィールドを無視するために、おそらくクラスに注釈を付けることもできます

于 2015-04-13T22:25:16.807 に答える
3

私の場合、このエラーの原因となっているフィールドの 1 つに @JsonProperty アノテーションを書き忘れていました。

于 2015-07-20T12:21:48.637 に答える
1

別の問題の解決策をここに追加しますが、同じエラーで現れるものです... json をその場で (API 応答などとして) 構築するときは、文字列メンバーのリテラル二重引用符をエスケープするように注意してください。独自の不正な json を使用している可能性があります。

于 2016-12-05T01:48:30.160 に答える
0

私の場合、無効にする必要はありませんでしたが、このコードをクラスの上に配置する必要がありました:(これで問題が解決しました)

    @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)//this is what was added
    @Value //this was there already
    @Builder//this was there already

public class NameOfClass {
     //some code in here.
}
于 2020-07-22T10:39:35.253 に答える