1

私は現在、2 つの既存のシステム間の統合を支援するために、いくつかのユーティリティ ライブラリに取り組んでいます。統合プロセスの一環として、オブジェクトを JSON に変換できる必要があります。

さまざまな理由から、シリアル化されたフィールド名を変更できる必要があります (つまり、キャメル ケースをスネーク ケースに変換し、場合によってはフィールド名を完全に変更します)。

システムの半分は (大部分) Java で書かれており、完全に私の管理下にあります。JSON をシリアル化/逆シリアル化するための私の推奨ソリューションは、Jackson を使用することです。さまざまな理由から、Jackson が正しい JSON を生成するために必要な属性を適用するために、既存のエンティティ クラスを変更することはリスクと見なされます。幸い、Jackson は Mixins を提供しています。これにより、本質的に注釈を動的に適用できます。これは、カスタムのシリアライザーとデシリアライザーを作成して同じ仕事をするよりもはるかに優れています。

システムの残りの半分は ASP.Net アプリケーションです。ここでも、既存のコードをできる限り変更したくありません。現在、シリアライゼーション/デシリアライゼーションに JSON.Net を使用しています。属性を定義してプロパティ名をオーバーライドするなど、必要なものはすべてサポートされているようです。

ただし、JSON.Net が Jackson と同じ Mixins の概念をサポートしているかどうかはわかりません。できれば、既存の .NET エンティティ クラスを変更して新しい属性を含めることは避けたいのですが、JSON.Net 内にこの機能が存在することを示唆するドキュメントが見つかりません。

では、JSON.Net を使用して Jackson のような mixin を適用する (文書化されている/文書化されていない) 方法があるかどうか、または顧客のシリアライザー/デシリアライザーを作成する必要があるかどうかを知っている人はいますか?

4

1 に答える 1

1

これが役立つかどうかはわかりませんが、 ClassMateプロジェクトの一部として、Jackson の mix-in 処理の外部実装のようなものがあります。ライブラリは他にも多くのことを行うため、通常の注釈とミックスインのマージを処理する部分を抽出するのがどれほど簡単かはわかりません。

于 2013-01-28T18:35:11.247 に答える