問題タブ [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.
json - 内部テンプレートを定義せずに Grails JSON ビューを使用するには?
私はドメインクラスを持っています:
次の JSON テンプレートがあります。
index.gson
: オブジェクトのリストの JSON を生成します
_business.gson
: ビジネス オブジェクトの JSON を生成する
index.gson
_business.gson
_business.gson テンプレートを使用せずにビジネス オブジェクトの JSON を生成するにはどうすればよいですか?
私は index.gson だけを持っていて、内部オブジェクトを手動でレンダリングするアプローチを取りたいと思っています。
json - 複数の JsonView 継承を行うにはどうすればよいですか
Java SpringBoot 1.5.7には複数のクラスがあるシナリオがあり、継承などを通じてそれぞれに異なる JsonViews を適用できるようにしたいと考えています。
クラス A はクラス B のプロパティです。クラス B の DetailView JsonView が使用されている場合にのみ、クラス B を Json にシリアル化する必要があります。
クラス B はクラス C のプロパティでもあります。
私の実際のシナリオでは、最大 5 レベルの継承が必要です。私の残りのコントローラーでは、さまざまなビューを使用したいと考えています。ClassC.DetailView.classビューを使用すると、JsonView は直接のクラス、つまりClassCとClassBを操作するだけですが、ClassA プロパティは結果の Json に含まれません。結果は次のとおりです。
また、最も外側のクラスの JsonView クラスを最も内側のクラスに配置しようとしました。ClassA プロパティに@JsonView (ClassC.DetailView.class)がありますが、それも機能していません。
私が望む結果は次のとおりです。
これを機能させるにはどうすればよいですか?
rest - Grails v3.3.3 で Json API レンダリングを json ビューで動作させる方法
単純な問題があり、ドキュメントが解決に役立たない。
Grails v3.3.3 デモ プロジェクトを作成し、JsonApiBook という名前の単純なドメイン クラスを作成しました。
JSON APIレンダリングはドメインクラスでのみ機能する(コントローラークラスでは機能しない)とドキュメントに記載されているため、URIをマークアップしました。
私のブートストラップでは、 book のインスタンスをテーブルに保存しました - そしてそれを一般的に見ることができます。
ビュー ディレクトリに、jsonApiBook フォルダーを作成し、2 つの gson ファイルを作成しました。
このような「_jsonApIBook」テンプレート
jsonapi ヘルパー オブジェクトを呼び出してインスタンスをレンダリングします。
同じディレクトリに、次のような index.json を作成しました。
アプリを実行し、郵便配達員またはブラウザーを使用してレンダリングすると、結果が得られますが、Json api に準拠しています (テンプレートは無視されていると思います)。
したがって、localhost:8080/jsonApiBook は単に返されます (デフォルトのレイアウトに見えます):
localhost:8080/jsonApiBook/1 は「null」を返すだけで、正しくありません。
JSON API 準拠の出力をレンダリングするには、json ビューをどのように設定すればよいですか? これは正しく動作していないようです。
grails - 私のindex.gson、show.gsonは、JsonViews 1.2.7を使用してGrails 3.3.3で無視されています
JSON API の取得と、ドメイン クラスの json のレンダリングに苦労しています。Grails v3.3.3 と JsonViews 1.2.7 を使用しています
@Resource アノテーションを使用してドメイン クラスを公開すると、コントローラーと「デフォルト」の json 出力が自動的に生成されます。
ただし、何が起こっているのかをある程度制御したいので、別のドメイン クラス (Customer と、Customer hasMany Sites のデモ アプリの Site) があります。
これらのドメイン クラスのいずれでも @Resource アノテーションを使用しません。
CustomerRestController と SiteRestController という 2 つのコントローラーを手動で作成し、UrlMappings を使用して URI を公開します。(1 つは '(resources: controller)' フォームを使用し、もう 1 つは宣言された明示的なコントローラーとアクションを使用します。
まず、SiteRestController で何が起こるかを見てみましょう (単純なデバッグ println を使用して、コンソールで呼び出されていることを示します)。私は GORM データ サービス モデルを使用し、サービスでインターフェイスを定義し、Grails に serviceImpl を自動構築させ、これをコントローラーに挿入しました。応答フォーマットを [json] と宣言しました
/views/site/_site.gson、index.gson、および show.gson を手動で作成しました
ビューが無視されていることを示すために、次のように show.gson を編集しました
および index.gson ビューとして
したがって、アプリを起動して「/api/sites」URL を呼び出すと、これが表示されます。これは単なる標準的なレンダリングであり、_site.gson を使用せず、index.gson を無視します
そして、「/api/sites/1」を呼び出すと、次のようになります (これは明らかに _sites.gson テンプレートを呼び出していますが、「show.gson」はテンプレートを使用しないように変更されており、これは明らかに無視されています)
また、このような顧客ビュー テンプレートからディープ レンダリングを実行しようとしました
/api/customers/1 をクエリすると、ディープ レンダリングに関するサイトの詳細が無視されます。サイトにはデフォルトの ID が表示されているだけで、_site.gson を呼び出していないように見えることに注意してください。
だから私はここで何が起こっているのか理解していません。Grails には独自の内部生成デフォルトがあり、私が提供したビューなどを無視しており、要求されたときにディープ レンダリングを実行していないようです。
私のビュー/テンプレートが期待どおりに呼び出されない理由を誰かが教えてくれますか?
java - StdSerializer Jackson で JsonView を使用する方法
StdSerializer を拡張してオブジェクトのリストを json の多くのオブジェクトに変換するシリアライザーを作成します。
から
に
シリアライザーのおかげで機能しています。
しかし、@JsonView を同時に使用することはできません。Jackson は要素内の注釈を考慮せず、 serializerProvider.getActiveView()
1 回の再帰呼び出しで情報を失いました。
どうすれば問題を解決できますか。多分 StdSerializer は良い解決策ではありません。または、メソッドを使用して StdSerializer 内の JsonView を考慮する方法を見逃しています