問題タブ [jackson2]

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 投票する
2 に答える
587 参照

java - Jersey 2.x ExceptionMapperの親マッピング

編集: ackson-jaxrs-base-2.8 で解決された ackson-jaxrs-base の以前のバージョンの問題でした。 https://github.com/FasterXML/jackson-jaxrs-providers/issues/22

例外マッパーを使用して、この問題に取り組んでいます。単一の ExceptionMapper で com.fasterxml.jackson.core.JsonProcessingException のすべての子をマップしたい。

ここに私のコードがあります:

次のコードで正常に動作します。

編集: JsonProcessingException は JsonMappingException の親です 正確に私はここで間違っていますか?

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

json - Jackson で範囲をシリアライズする

Range特定の形式、つまり でシリアル化する必要がある があります"[lower,upper)"。そのために、基本的なシリアライザーを作成しました。

(実際にはRange、シリアライザーは、閉じた/開いた範囲、両端に無制限の範囲がある可能性などのさまざまな可能性を処理することに注意してください。単純)。

私の問題は、各クラスのデフォルトのシリアライザーにフォールバックすると、間違った場所に引用符が表示されることです。たとえばRange<String>、エントリを持つがあった場合"[foo,bar)"、それをシリアル化すると が得られ"["foo","bar")"ます。下限エンドポイント値と上限エンドポイント値を引用符なしで結果が必要です。

追加の引用符はgen.writeString()、基礎となるシリアライザーが既に文字列になっていることを認識していないためであることを理解しています。ジェネレーターにこれを知らせる方法、または私がやろうとしていることを達成する別の方法はありますか?

Range<?>本当に一般的なので、値のシリアル化をハードコーディングできないことに注意してください。Range<Integer>Range<String>、およびその他すべてで機能する必要がRange<DateTime>あります。

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

java - Jackson 1のStdSerializerProviderに相当するJackson 2はありますか?

Jackson 1.9.2 を使用するレガシー コードを継承しており、Jackson 2.x にアップグレードしたいと考えています。争点の1つは次のとおりです。

私が抱えている問題はStdSerializerProvider 、Jackson 1.9.xには存在するが、Jackson 2.x には存在しないことです。既存の動作を保持する同等のクラスはありますか? それとも交換が必要ですか?

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

java - RESTEasy クライアントで JSON 応答の特定のノードを抽出する

RESTEasy クライアントを使用して API から JSON 文字列を取得しています。JSON ペイロードは次のようになります。

itemsここで、オブジェクト マッピング用のノードのみを抽出したいと思います。itemsJSON 応答本文をインターセプトし、ルート ノードとして 持つように変更する最良の方法は何ですか?

API メソッドにRESTEasy プロキシ フレームワークを使用しています。

REST クライアント コード:

RESTEasy プロキシ インターフェイス:

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

java - ObjectMapper().createObjectNode と JsonNodeFactory.instance.objectNode() の違いは?

新しいノードの挿入に関する投稿を見て、JsonNode2 つの別々の回答に遭遇しましたが、2 つの違いを把握できません。

私の少しの経験から、ObjectMapperでは何も作成できませんがObjectNodeArrayNodewhileでは多数のノードJsonNodeFactoryを作成できます。

それとは別に、他の違いは何ですか?

また、それObjectMapper高価であると考えられているため、後者の方法がより効率的かどうか疑問に思っていましたか?

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

java - Jackson で JsonNode を非常に具体的な JSON 形式にシリアル化する

JsonNode印刷したい結果があります。これまでのところ、私は使用しています:

次のようなものを出力します。

しかし、私はそれをこの特定の形式にする必要があります:

文脈上、私は からJSONObjectJackson に移行しているので、2 番目の出力は によって出力されるものJSONObject.serialize()です。

また、上記の各形式の名前はありますか? さまざまな基準に準拠しているようです。

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

java - Jackson - カスタム JsonSerializer でカスタム PrettyPrinter を使用する

JSONをファイルにシリアル化するためにJackson v2.8.2を使用しています。

serializeカスタムシリアライザーを作成し、必要に応じて JSON 出力をカスタマイズするメソッドを実装しました。

次のようにシリアライザーを呼び出しています。

JSON ファイルが作成され、コンテンツが適切に表示されます。

ファイルは に従ってフォーマットされていますが、既に実装したDefaultPrettyPrinter独自の custom を使用したいと考えています。PrettyPrinter

それ、どうやったら出来るの?

私は次のことを試しました:

しかし、それは私のカスタムプリンターを呼び出していません。

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

java - 完全な POJO データ バインドを使用した Jackson カスタム フィルター

この質問はこの質問を拡張します。

前のソリューションは、フィールドが数個しかない場合はうまく機能しますが、フィールドが 12 個を超えると維持できなくなります。現在、私の現在のセットアップは完全なデータ バインディングを使用しているため、Jackson が JSON を自動的に逆シリアル化するために使用する POJO があります。

ただし、以前と同様に、特定のフィールドには通過する必要がある制約があります。基本的に、これに似た答えを探していますが、プロパティを設定する必要はありません。フィールドが制約を満たさない場合にフィルターとして機能し、カスタム例外をスローするカスタム デシリアライザーです。フィルターの最後まで例外がスローされなかった場合、Jackson は JSON を POJO に自動的にバインドする必要があります。

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

java - Jackson の @JsonTypeInfo(use = Id.CUSTOM, include = As.PROPERTY, property = "type") は、"type" を除く JSON のすべてのフィールドを読み取ります

コードの各行をステップ実行しましたが、Jackson が内部的にポリモーフィズムを処理する方法だと思います。

DogおよびCat拡張の古典的な例を使用しAnimalます。

犬のクラス :

猫クラス:

AnimalTypeIdResolver、 を拡張する典型的な TypeIdResolver ですAbstractTypeIdResolver

非常に奇妙な理由で、bark_decibelmeow_levelは JSON から逆シリアル化されていますがtypenull. 何か案は?

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

java - Jackson 2 で json をアンマーシャリング中にエラーが発生しました

Jackson 2 を使用して、次の JSON ファイルを非整列化しようとしています。

Geometry/coordinates 要素の非整列化中にエラーが発生します。誰かがエラーの場所を教えてもらえますか?

ジオメトリ部分の前はすべて問題ありません。