問題タブ [jackson-modules]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
354 参照

java - 幅優先のジャクソンの @JsonIdentityInfo

JSON から循環オブジェクトを削除するために Jackson の @JsonIdentityInfo を使用しています。

以下がJavaクラス Class A, B, C であり、以下が構造であるとします。

私のオブジェクトは(A)です

にオブジェクトを変更しています

Cには同じIDがあるため、これをBreadth firstとして実装したいです。つまり、最初のレベルはオブジェクトを削除してプロパティを与える必要がありますが、深さレベルはこれを行う必要があります。次のように取得する方法はありますか?

0 投票する
5 に答える
21625 参照

java - double に科学表記法を使用しないように Jackson ObjectMapper クラスを設定します。

JsonSchema にライブラリ com.fasterxml.jackson ライブラリを使用しています。以下のコードを使用して整数スキーマの範囲を設定すると、IntegerSchema オブジェクトを作成します。

ObjectMapper を使用して IntegerSchema を文字列に変換すると、以下の応答が得られます。

最大値と最小値が科学表記法に変換されています。

しかし、私は以下のように非科学的表記法で出力する必要があります:

IntegerSchema クラスを変更できません。

IntegerSchema クラスを拡張せずに必要な出力を取得する方法を提案してください。

前もって感謝します

0 投票する
1 に答える
206 参照

java - enum を拡張し、Java のオーバーライドされたメソッドで使用する

列挙型を返す抽象からメソッドを拡張することに関する問題に直面しています。

以下は、拡張する必要がある com.fasterxml.jackson ライブラリの抽象クラスです。

JsonFormatTypes は列挙型です。

ここで、SwitchSchema と JsonFormatTypes の JsonSchema クラスを拡張して、タイプを「SWITCH」にする必要があります。

今私の質問は、JsonFormatTypes列挙型を拡張して「SWITCH」を持ち、それをオーバーライドされたメソッドで使用する方法ですか?

0 投票する
4 に答える
75718 参照

java - 複数のパラメーター コンストラクターを使用した Jackson JSON デシリアライゼーション

私はしばらくの間、プロジェクトで FasterXML/Jackson-Databind を使用してきましたが、この投稿を発見し、このアプローチを使用して @JsonProperty アノテーションなしでオブジェクトを逆シリアル化するまで、すべてがうまく機能していました。

問題は、複数のパラメーターを取り、このコンストラクターを @JsonCreator アノテーションで装飾するコンストラクターがある場合、Jackson が次のエラーをスローすることです。

問題を説明するために小さなプロジェクトを作成しました。逆シリアル化しようとしているクラスは次のとおりです。

デシリアライズするコードは次のようになります。

すでに @JsonCreator を削除しようとしましたが、削除すると、次の例外がスローされます。

「mvn clean install」を実行しようとしましたが、問題が解決しません。

いくつかの追加情報を含めるために、この問題について徹底的に調査しました (GitHub の問題、ブログ投稿、StackOverflow Q&A)。私が最後に行ったデバッグ/調査は次のとおりです。

調査1

生成されたバイトコードでjavap -vを実行すると、次のようになります。

コンストラクターについて話すとき、-parametersフラグが本当に javac コンパイラー用に設定されていると思います。

調査2

単一のパラメーターを持つコンストラクターを作成すると、オブジェクトは初期化されますが、複数のパラメーターのコンストラクターを使用したい/使用する必要があります。

調査3

各フィールドで注釈 @JsonProperty を使用しても同様に機能しますが、元のプロジェクトでは、コンストラクターに多くのフィールドがあるため、オーバーヘッドが大きすぎます (また、注釈を使用してコードをリファクタリングするのが非常に難しくなります)。

残っている問題は 、Jackson を注釈なしで複数のパラメーター コンストラクターと連携させるにはどうすればよいかということです。

0 投票する
2 に答える
224 参照

java - Joda オブジェクトでコンテンツ フィールドを回避するにはどうすればよいですか?

ドキュメントで Joda オブジェクト (DateTime および DateTimeZone) を使用していますが、REST インターフェイス経由でアクセスするたびに、このようなフィールドを持つエントリを取得します

lastAggregationDate: { content: "2016-07-12T17:58:43.643Z" }

それ以外の

lastAggregationDate: "2016-07-12T17:58:43.643Z"

Joda Jackson の依存関係が宣言されており、これらの型のデシリアライザーが表示されているため、ここで何が機能しているのかわかりません。

少し修正した Spring サンプル プロジェクトでこの動作を再現しましたが、Joda ではなく Java のネイティブの日付型を使用しています。Person オブジェクトに生年月日プロパティを追加し、shouldRetrieveEntityテストを変更して$.dateOfBirth.content. シリアライザーが使用されていることを確認しましたが、LocalDateオブジェクトが単純なプロパティではなくリソースとして扱われているようです。

0 投票する
1 に答える
1011 参照

java - Jackson の StdDeserializer のコンストラクタで使用されるクラスvc または JavaType valueTypeとは

Jackson JSON ライブラリを使用してカスタム デシリアライザー (拡張StdDeserializer) を作成していますが、コンストラクター パラメーターの目的がわかりません。ジャクソンは何のために使用されていますか? Java に具体化されたジェネリックがなく、Jackson がインスタンスを作成しているジェネリック型に関する詳細情報を必要としているからですか?Class<?>JavaType valueType