問題タブ [genson]
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.
json - Genson / Jerseyを使用して日付フォーマッターを構成するにはどうすればよいですか?
私はRESTfulサービスにJerseyを使用し、JSON/POJO変換を実行するためにGensonを使用しています。Gensonの設定はありません。クラスパスにドロップするだけで機能しますが、形式が予期しないために日付の解析でエラーがスローされる点が異なります。
さて、これをサーブレットとしてGsonを使用して行う場合は、管理しているGsonインスタンスに日付形式を設定します。これにより、POJOの解析で正しい形式が使用されるようになります。Gensonにも同様のインターフェイスがあるようですが、JerseyサーブレットサービスまたはSpringコンテキストからインスタンスを取得する方法がわからないため、フォーマットを設定できます。
つまり、簡単な質問は、ジャージーで開始したときにGensonの日付形式を設定するにはどうすればよいですか?
java - Genson は、オブジェクトの一般的なネストされたフィールドを処理できますか?
基本的に、できるだけ頭を悩ませずに JSON にシリアライズしたい Java オブジェクトがいくつかあります。現在、Tomcat、Jersey、Genson を使用しています。
Gensonでは、このようなものは機能しないことがわかりました(これはもちろんおもちゃの例です):
上記の出力は次のとおりです。
Genson の優れた点は、WebContent フォルダーにドロップしただけで、Jersey にバンドルされていたものの代わりに使用されたことです。追加の構成は必要ありませんでした。上記のようなオブジェクトを取得して JSON にシリアル化するための、スキーマごとに何らかのコンバーターを作成する必要のない非常に簡単なアプローチがある場合、Genson の代わりに Jersey でそれを喜んで使用しますが、Genson は私を失敗させませんでした。欠点が遠い。
では、Genson に適切にシリアル化するように指示するにはどうすればよいでしょうか。または、この種のことを問題なく処理するライブラリとはどのようなものでしょうか?
ありがとう!
java - JSON を Java DTO にシリアライズ/デシリアライズして、追加のフィールドをマップに入れることは可能ですか?
次のような DTO があります。
次の JSON との間でシリアライズしたいと思います。
JacksonまたはGensonを使用してこれを行う方法を知っている人はいますか? 基本的に、DTOで宣言されたフィールドの自動型変換が必要ですが、「追加」はparamsマップに入ります。
java - 複数のセットをHibernateクラスからJsonにマップするには?
これは、Hibernate にマップしたクラスの一部です。
しかし、このクラスを JSon にマップしようとすると、常にスタックがあります。Jackson Mapper、Genson、および Google Gson を使用していましたが、このコードをマップできません (または、これをマップする方法がわかりません)。この種のセットを適切にマッピングする方法を誰か教えてもらえますか?
java - gensonを使用してjson文字列を流体オブジェクトにデシリアライズする
json ドキュメント内の文字列要素の単純な配列を、genson を使用して Bean 内にある Java リストに変換しようとしています。これが自動的に行われることを期待していましたが、機能していません。何か不足していますか?
これが私のJson-Stringです:
そして、これが私のオブジェクトの出力であり、私のアクセス許可リストが入力されていないことを示しています:
私の DefaultRole クラスは次のようになります。
JAXB アノテーションは XML 変換専用です。彼らはここで役割を果たすべきではありません。
次のような Genson オブジェクトを作成しています。
私の逆シリアル化呼び出し:
JSON文字列配列をBean内にあるJava Listオブジェクトに逆シリアル化する方法についてのヒントはありますか?
編集 [部分的に解決 - まだ 1 つの質問が未解決]
私は今、さらに一歩を踏み出しました。ルーツに戻り、単純に文字列のリストを持つ基本的な Bean から始めました。そして、初めて期待どおり、これは機能します。前のオブジェクトとの主な違いは、これが Bean 仕様に従っていることです。もう 1 つのオブジェクト (DefaultRole) は fluid-object-pattern に従います (それが正しい定義かどうかはわかりません)。基本的に、setter メソッドが void である代わりに、オブジェクトを返すので、次の値を流動的な方法で簡単に設定できます。
したがって、これは機能します:
これは動作しません:
他の誰かがこれに遭遇しましたか?すべてのBeanをBean仕様に準拠するように切り替える代替手段は何ですか? セッターメソッドを使用する代わりに、純粋なフィールドレベルの人口を使用する唯一のオプションはありますか?
編集 [ほぼ解決済み]
こんにちは、私が行ったことを理解するためにコードが必要な質問にどのように答えるのが最善かわかりません。
とにかく、あなたの助けをどうもありがとう。私は、私が探していたタイプのものである 3 番目のオプションが本当に気に入っています。残念ながら、「型クラス xxx.DefaultRole のコンストラクターが見つかりませんでした」というエラーが表示されます。あなたの答えであなたが言ったことによると、これは Trilean.UNKNOWN を返すときに検索が続行されるときに発生しないはずです。
次のコードを genson-builder に追加しています。
私の Reflect.isSetter(method) は次のようになります (コードはここから適応: http://www.asgteach.com/blog/?p=559 ):
BaseResolver は、実装されていないすべてのものに対して Trilean.UNKNOWN を返します。したがって、標準ロジックを使用してコンストラクターを見つける必要があります。
編集 [解決済み]
完全を期すために、実際に機能するコードを投稿します。
ここで、「.set(new BeanMutatorAccessorResolver.BaseResolver()」を「.with(new BeanMutatorAccessorResolver.BaseResolver()」) に置き換える必要があることに注意することが重要です (「set」ではなく「with」に注意してください)。それ以外の場合、標準のリゾルバーは使用されなくなり、コンストラクターが見つからなくなったというエラーが発生します。
isSetter メソッドは次のようになります。
ここで、return-type と declaring-class を比較するときに、もともと「isAssignableFrom」ではなく「equals」を使用していたことに注意することが重要です。これは、戻り値の型が宣言されているクラスとまったく同じクラスである場合にのみ機能します。ただし、戻り値としてインターフェイスを使用する場合は機能しなくなります。代わりに "method.getReturnType().isAssignableFrom(method.getDeclaringClass())" を使用すると、これはインターフェイス (スーパー インターフェイスを含む) でも機能します。
ありがとう、マイケル
backbone.js - Genson を使用した JSON 形式のエラー
JSON応答として次のjson文字列を取得しています。genson を使用して json 文字列を生成しています。クライアント側では、バックボーン コレクションの parse メソッドをオーバーライドして、json 文字列をオブジェクトのコレクションに変換しています。次の JSON 応答の何が問題なのかはわかりません。
genson - Genson が UnrecognizedPropertyException をスローしない
次の {"token":"abcd","m":"n"} を含む json POST リクエストがあります。ここで、Java Bean は次のように保持します。
Genson を使用すると、Pom.xml から Genson の依存関係を削除すると発生する UnrecognizedPropertyException がスローされません。