問題タブ [json-view]
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.
spring-mvc - Spring MVC コントローラーでの JsonView の動的選択
@JsonView(...)
Spring MVC で単一のビュー クラスを静的に定義するために、コントローラー メソッドにアノテーションを付けることが可能であることを認識しています。残念ながら、これは、可能性のあるビューの種類ごとに異なるエンドポイントが必要であることを意味します。
私は他の人が以前にこれを尋ねたのを見ます。このアプローチはうまくいくかもしれませんが、Spring には多くの場合、同じことを行う多くの方法があります。いくつかの内部構造について少し知識があれば、ソリューションが最初に表示されるよりもはるかに単純になることがあります。
現在のプリンシパルに基づいて適切なビューを動的に選択できる単一のコントローラー エンドポイントが必要です。適切なビュー クラスまたはインスタンスを直接Model
含む属性を持つを返すことは可能ですか?MappingJacksonValue
org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter#writeInternal
使用するビューを決定するコードのスニペットがあることがわかります。
これは由来のようですが、正しいビューを選択するorg.springframework.web.servlet.mvc.method.annotation.JsonViewResponseBodyAdvice#beforeBodyWriteInternal
ために必要な情報を含む特定の値を返すだけでこれを回避できる方法があるかどうか、うまくいきません。Jackson2HttpMessageConverter
どんな助けでも大歓迎です。
java - @JsonView が機能しない (Spring 4.1.5、Jackson 2.5.1)
Entity に @JsonView アノテーション付きのフィールドがあります。
私のコントローラー内:
私のビュークラス:
応答には「パスワード」フィールドのみが含まれると予想していましたが、代わりに何も含まれていません。コントローラーから注釈を削除する@JsonView(View.Secure.class)
と、通常どおり機能し、すべてのフィールドが返されます。私は何を間違っていますか?Spring 構成に追加の構成を追加する必要がありますか?
このチュートリアルを使用しました: https://spring.io/blog/2014/12/02/latest-jackson-integration-improvements-in-spring
json - JsonView を選択して、実行時に HttpResponse をシリアル化します
Jackson を使用して、スプリングでバックアップされた resteasy REST API 実装があります。
実行時に (リソース クラス内で) HttpResponse をシリアル化するために使用する JsonView を決定したいと考えています。
カスタムシリアライザーを試していますが、オブジェクトマッパーが設定された後にビューを構成できないようです。それを行うためにどのようなアプローチが実現可能でしょうか?
java - Spring MVC レスト コントローラー全体の @JsonView 宣言
@JsonView
Spring MVC レストコントローラー全体を宣言する方法はありますか?
@JsonView
次のような特定のメソッドを宣言できることはわかっています。
しかし@JsonView
、私のメソッドは夕食クラスで定義されており、単一の注釈を追加するためだけにメソッドをオーバーライドしたくないため、メソッドごとに定義したくありません。コントローラー全体、つまり次のよう
に宣言したいと思います。@JsonView
これを達成する方法はありますか?
jackson - Jackson - 実行時にアクティブな JsonView を見つける方法
JPAエンティティをラップするUIオブジェクトがあり、そのUIオブジェクトのコンストラクターで、いくつかのプロパティの遅延読み込みを行います。その同じコンストラクターで、現在アクティブになっている JsonView を知る必要があるため、List ビューなどの不要なフィールドを遅延ロードしません。コンストラクターから、実行時に現在アクティブな JsonView を見つける方法はありますか。または、私が上で説明したことを達成する他の方法はありますか。
私の現在の計画 では、シリアル化中に、シリアル化するオブジェクトの setJsonView(Class jsonView) を呼び出すカスタム シリアライザーを作成します。シリアル化されたすべてのオブジェクトは、そのメソッドをサポートする必要があります。その metid 内で、現在知られている json ビューに基づいて遅延読み込みを行うことができます。このようなもの:
java - 特定のプロパティの JsonView を変更する方法
こんにちは、相互に埋め込まれた UI オブジェクトはほとんどありません。例 #1:
ご覧のとおり、UserUI をパブリックとしてシリアル化すると、名前のみが公開されますが、プライベートの場合はすべてのフィールドが公開されます。
これが私の質問です: オブジェクト CarUI をシリアル化するときに、「ユーザー」の名前のみを公開し、「エージェント」の名前と電話の両方を公開したいと考えています。つまり、getUser() のゲッターで JsonView を Views.Public.class に変更し、getAgent() のゲッターで Views.Private.class に変更したいということです。
この新しいJsonViewを使用して、返されたオブジェクトのすべての階層をシリアル化するために、ゲッターでJsonViewを上書きする方法はありますか?
編集 済み 以下に示すように、JsonView 継承を使用して私の例 #1 を解決できます。より一般的なものはどうですか。例 2 は次のとおりです。
この例では、エージェントには名前と電話、ユーザーには名前とアバターの URL を表示します。
java - コントローラーへの AJAX 呼び出しを有効にするために @JsonView(Views.Public.class) を追加する必要がありますか?
最近、AJAXがコントローラーを呼び出してJSON結果を返すことができるように、小さなWebアプリを構築しようとしています。追記了解です
シリアル化したくないすべてのフィールドを除外するフィルターとして機能します。基本的に、この JsonView でアノテーションが付けられていないすべてのフィールドは除外されます。
私の質問は次のとおりです。Springコントローラーでは、JsonViewに注釈を付ける必要がありますか? コントローラーにもモデルオブジェクトにも、それらをまったく含めない場合はどうなりますか?
リンク/記事は大歓迎です。ありがとうございました!
firefox-developer-tools - Firefox Developer Edition で新しい JSON Viewer/Reader を無効にするにはどうすればよいですか?
Firefox Developer Edition 44には JSON Viewer が組み込まれました。これは素晴らしいジェスチャーですが、私が使用していたサードパーティの JSON ビューアーの読みやすさが非常に気に入っています。
新しいビルトイン JSON ビューアーを無効化、オーバーライド、またはカスタマイズする方法はありますか?