問題タブ [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 に答える
4002 参照

java - @JsonPropertyOrder が jackson-module-jsonSchema で機能しない

Jackson モジュールの最新のブランチ (jackson-module-jsonSchema、つまり 2.4.4-Snapshot) を使用しています。

@JsonPropertyOrder アノテーションを使用して POJO 属性の順序を維持しようとしていますが、アノテーションを尊重していないようです。

私のサンプルPOJOは次のとおりです-

ジャクソンコードは次のとおりです-

Json出力は次のとおりです-

この種の問題は2.3.2ですでにクローズされていることがわかっているので、誰かが私が何か間違ったことをしているのか、それともジャクソンで問題を開く必要があるのか​​ を提案できますか ( https://github.com/FasterXML/jackson- dataformat-xml/issues/91 )?

0 投票する
3 に答える
3784 参照

java - Spring MVC 構成 + Jackson + Guava マルチマップ

私はこれに苦労しています:

Guava マルチマップを持つ Table クラスがあります (簡略化されたコード、基本的に 1 つのメンバー、2 つのコンストラクター、マルチマップのゲッターとセッター):

そして、Jackson 2.4.3 を使用して Spring MVC 3.2.11 を使用してこれをシリアライズしたいと考えています。

POM 関連の依存関係は次のとおりです。

私の spring.xml NOWは次のようになります (このに従う)

また、拡張された Jackson2ObjectMapperFactoryBean を使用して、この他のアプローチも試しました。

そして、FactoryBean は次のようになります。

}

私は正常に動作し、Spring をまったく使用していない Test クラスを持っています (Table.class + Jackson + guava をテストするだけです)。

適切にシリアル化します。

春(2つのアプローチのいずれか)を使用すると、次のようになります。

私のコントローラーには @ResponseBody アノテーションがあり、テーブルを返しています。

編集: 私は春のクラス (初めて;-)) に深くデバッグしており、org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor がリクエストを処理しています。これは私の問題に関連していますか...私のSpring xmlは、@ResponseBodyアノテーションと何らかの形で矛盾していますか?

私が間違っていることはありますか?

注: Multimap が必要です。標準の Java コレクションにすることはできません。

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

java - Jackson はオブジェクトの一部を更新します

これが私がやろうとしていることです。2つのjson入力があるとしましょう。

初め

2番

そして、私はクラスを持っています

だから、この後、私は得ています

行きたい場所

ジャクソンから何かが欠けている場合、またはそのような機能がなく、独自に作成する必要がある場合はお知らせください。

ここで私が望んでいたことを行うための直接的な会話はないので、jsonノードが同じことを行うために書いたものです。ノードをマージ/上書きする 2 つの関数と、マージ/上書き配列。これは、2つのjsonノードを渡すことで機能します。誰かが同様のものを探している場合に役立つことを願っています

0 投票する
0 に答える
140 参照

java - カスタム DeserializerFactory を Jackson 2 ObjectFactory に追加します

Jackson 1.x から 2.x にアップグレードしようとしています。

私が問題を抱えている領域の 1 つは、次のようなカスタム DeserializerFactory を使用していた場所です。

setDeserializerProvider は現在、Jackson2 ではなくなりました (ただし、setSerializerProvider はまだ存在します)。SimpleModule の使用を検討していましたが、必要なものもありません。

これは2でどのように機能するはずですか?

更新:工場である必要があることを強調する必要があると感じています。デシリアライザーを登録するだけではありません。

カスタム ファクトリは、次のようにデシリアライザーに情報を渡します。

その値 (contentDeserializer) は、異なる型を含むコレクションの実行時に異なります。

0 投票する
3 に答える
22938 参照

java - ひねりを加えた POJO から Json Schema を生成する

私が持っているもの:

pojo から JSON スキーマを生成しています。スキーマを生成するコードは次のようになります。

上記のコードを使用して、いくつかのスキーマを生成しています。pojo の 1 つには、次のように、可能な値を制限するための内部埋め込み列挙型があります。

上記のコードは、渡される JSON データで可能な String 値を「Monday」、「Tuesday」、「Wednesday」などに制限する必要があります。

問題のコードでスキーマ ジェネレーターを実行すると、次のようなスキーマが得られると予想されます。

しかし、代わりに私はこれを得ています:

Jackson スキーマ モジュールのソース コードを掘り下げたところ、Jackson が ".toString()" を列挙型のデフォルトのシリアル化メソッドとして使用していることがわかりましたが、代わりに必要なのは次の行を作成することです。に基づいて次のようになりStartDayOfWeek.values()ます。

誰もそれを行う方法を知っていますか?

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

java - Jackson ObjectMapper は、「長い」Java 型を「整数」ではなく「数値」として扱います

org.codehaus.jackson.map.ObjectMapper(databind バージョンではありません!) を使用して、次のオブジェクトから json スキーマを生成しています。

次のコードを使用します。

次のスキーマを取得します (関連する部分に取り除かれます)。

「number」は long の最適な表現ではありません。別の場所でスキーマから pojo を生成しようとすると、「long」ではなく「double」が得られるためです (または「int」でも問題ありません)。

これによると、私のニーズにはるかに適したjsonの「整数」データ型があります: http://spacetelescope.github.io/understanding-json-schema/reference/numeric.html

しかし、jackson-mapper モジュールのソース コードを調べたところLongSerializer、このクラスに含まれる標準シリアライザーが使用されていることがわかりました。org.codehaus.jackson.map.ser.StdSerializers

関連する部分は次のメソッドです。

簡単に言えば、標準のシリアライザーをオーバーライドすることは可能ですか、それとも、生成された出力をハックする必要がありますか?