問題タブ [spring-json]
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.
java - Spring と Gson - 特定の条件でのみフィールドを公開する
オブジェクトのシリアル化にSpringとGsonを使用しています。
@Expose
アノテーションを使用するモデル オブジェクトがあります。
Zone
オブジェクトリストをユーザーに提供する2つのコントローラーがあります。
問題はList<String> longList
var です - 通常、多くのエントリがあります (String
これは単なる例であり、コードでは複雑なオブジェクトである可能性があります)。
私getFullZones()
はこれを使用してユーザーゾーンにサービスを提供したいのですlongList
が、ゾーンを使用getSimpleZones()
せずにサービスを提供したいですlongList
(クライアント側ではまったく使用されません)。
どうやってするか?
ゾーンを使用してリストを反復処理しlongList
、null に設定することはできますが、これはあまり洗練されたソリューションではありません。
私はこのようSpring
に使用するGson
ように設定しています:
java - Java Spring Data JPA および REST API: ネストされた JSON オブジェクトのフィールドを除外
現在、REST API サービス用に Spring Boot Web 2.2.1 で Spring Data JPA 2.2.1 を使用しています。
/categoriesへの getter 呼び出しは、実際には望ましい結果である次の JSON を返します。
エンティティ:
コントローラ:
リポジトリ
データサービス
すべてのフィールドを返すわけではない/limitedCategories API への新しい呼び出しを追加したいと考えています。たとえば、親エンティティの「category2」と、ネストされたエンティティの「field4」は除外されます。
問題:
- JPA リポジトリ内で目的のフィールドを手動で選択することができず、ネストされたオブジェクトを処理する方法もわかりません。
- findAll を使用し、@JsonIgnore を使用してそれらのフィールドを除外するという単純なアイデアは、最初のリクエストにはまだそれらのフィールドが必要であるため、不可能です。
- リポジトリ内で @Query アノテーションを使用して目的のフィールドのみを取得すると、JSON のネストされたフィールドを取得する方法が見つかりません。
前もって感謝します。
Spring Data JPA 2.2.1 と Spring Boot Web 2.2.1 を使用しています。
java - Java Spring Web - バリデータでサブプロパティをオブジェクトに変換
コントローラーサービスモデルと検証でSpring Webを使用しています。Color オブジェクトと Color サービスがあります。
コントローラーの 1 つで、オブジェクトを受け入れています。
ご覧のとおり、eventColor
サブプロパティのタイプはColor
です。ただし、送信者が色の名前だけを送信できるようにしたいです (色は多くなく、とにかくメモリにキャッシュされています)。
文字列型の色とバリデーターを使用して色が存在することを確認できることは知っていますが、それを Color にキャストする方法はありますか?
spring-boot - 多対多の関係におけるjsonの無限再帰
多対多の関係を使用している場合、json で無限ループになるため、@JsonBackReference と @JsonManagedReference を使用しましたが、以下のように返されます
/api/peoples を検索したとき
/api/banks を検索すると、人ではなく銀行のみが返されます
]
最初のもののように /api/banks でも人を返す方法を解決するのを手伝ってください