問題タブ [fasterxml]
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.
fasterxml - JAXB クラス - XML が期待どおりに作成されない
私は、fasterxml-jaxb(2.3) モジュールを使用して XML を生成していますが、XML の作成中に Xmlns アノテーションを読み取っていないようです。以下のように、パッケージ情報で定義されたプレフィックスを持っています
Jackson は接頭辞を適用しませんが、ユーザーがマーシャリングに JDK の JAXB を使用している場合、接頭辞は XML に適用されます
java - POJO フィールドを変更して POJO を返す方法はありますか
POJO のフィールドを新しいプロパティ (MixIns や を使用するなど@JSONProperty
) で変更し、変更された POJO を元に戻す方法はありますか? (POJO のフィールドを動的に追加/変更する方法は?)
クラスがあるように
だから、私はMixInsのようなもので試しました
変更されたフィールドを取得するには、次を使用しますObjectMapper
実際の結果は ですString
が、変更された POJO を取得できますか?
java - POJO を変更せずに大文字と小文字を区別しない JSON から POJO へのマッピング
com.fasterxml.jackson.databind.ObjectMapper がどのように JSON プロパティを大文字と小文字を区別しない POJO プロパティにマップできるか知っている人はいますか?
JSON 文字列:
[{"FIRSTNAME":"John","LASTNAME":"Doe","DATEOFBIRTH":"1980-07-16T18:25:00.000Z"}]
POJO クラス:
テストクラス:
これは、次のエラーで終了します:
com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of ...
JSON-String も POJO-Class も変更できません。
java - Jackson - オブジェクトの配列の操作、追加と削除
JSON を扱うために、Java で Jackson API を使用しています。私はあちこちでそれを少し扱ってきましたが、あまり深くはありません。
現在、POJO のリストから作成された JSON オブジェクトの配列 (ストリームまたは文字列を介して) を取得し、POJO を追加または削除する良い方法を探しています。追加の場合、重複チェックは実際には必要ありません。簡単な例として、「field」という名前の単一の変数を持つ Java オブジェクトのリストからこの配列を作成したとします。
そして、「フィールド」が「値3」に設定された同じタイプのオブジェクトを追加したいと思います。単純に配列全体を Java オブジェクトのリストにデシリアライズし、新しいオブジェクトを追加して、それをシリアライズして JSON に戻すこともできますが、それはやり過ぎのように感じます。Jackson を使用して単純に新しいオブジェクトをシリアル化し、それを JSON 配列の末尾に追加できればもっとよいでしょう。同じことが、配列から既存のオブジェクトを削除する場合にも当てはまります。
java - Jackson を使用したカスタム コンパレータを使用した Guava クラスのデシリアライズ
ソートされたマルチセットにシリアル化/逆シリアル化する必要があるフィールドのクラスの 1 つで Guava TreeMultiset を使用しています。カスタム コンパレータを使用して TreeMultiset を構築しています。
シリアル化は正常に機能しているように見えますが、Jackson が TreeMuliset インスタンスを構築するためのカスタム コンパレータにアクセスできないため、逆シリアル化は失敗します。デシリアライズ中にコンパレータインスタンスを渡すにはどうすればよいですか?
最初に検索したところ、次の 2 つのオプションが見つかりました。
- Comparable インターフェースを実装します。これは機能しますが、クラス自体に独自の順序付けを課すのは不十分です。
- 投稿 ( http://jackson-users.ning.com/forum/topics/de-serialize-treeset-by-first-defining-a-comparator ) に基づいてラッパー クラスを作成し、呼び出して回避しようとしました。これは @JsonDeserialize アノテーションを使用して
public Constructor(@JsonDeserialize(as = CustomTreeMultiset.class) field) {
//
}
Guava TreeMultiset は finalであり、それを拡張してラッパーの逆シリアル化クラスを提供する CustomTreeMultiset を実装できないため、この戦略は失敗します。カスタムの順序付けロジックをクラスに注入するよりも良い解決策はありますか?