問題タブ [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.

0 投票する
1 に答える
321 参照

json - 内部テンプレートを定義せずに Grails JSON ビューを使用するには?

私はドメインクラスを持っています:

次の JSON テンプレートがあります。

index.gson: オブジェクトのリストの JSON を生成します

_business.gson: ビジネス オブジェクトの JSON を生成する

index.gson

_business.gson

_business.gson テンプレートを使用せずにビジネス オブジェクトの JSON を生成するにはどうすればよいですか?

私は index.gson だけを持っていて、内部オブジェクトを手動でレンダリングするアプローチを取りたいと思っています。

0 投票する
1 に答える
1749 参照

json - 複数の JsonView 継承を行うにはどうすればよいですか

Java SpringBoot 1.5.7には複数のクラスがあるシナリオがあり、継承などを通じてそれぞれに異なる JsonViews を適用できるようにしたいと考えています。

クラス A はクラス B のプロパティです。クラス B の DetailView JsonView が使用されている場合にのみ、クラス B を Json にシリアル化する必要があります。

クラス B はクラス C のプロパティでもあります。

私の実際のシナリオでは、最大 5 レベルの継承が必要です。私の残りのコントローラーでは、さまざまなビューを使用したいと考えています。ClassC.DetailView.classビューを使用すると、JsonView は直接のクラス、つまりClassCClassBを操作するだけですが、ClassA プロパティは結果の Json に含まれません。結果は次のとおりです。

また、最も外側のクラスの JsonView クラスを最も内側のクラスに配置しようとしましたClassA プロパティに@JsonView (ClassC.DetailView.class)がありますが、それも機能していません。

私が望む結果は次のとおりです。

これを機能させるにはどうすればよいですか?

0 投票する
2 に答える
702 参照

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 ビューをどのように設定すればよいですか? これは正しく動作していないようです。

0 投票する
0 に答える
434 参照

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 には独自の内部生成デフォルトがあり、私が提供したビューなどを無視しており、要求されたときにディープ レンダリングを実行していないようです。

私のビュー/テンプレートが期待どおりに呼び出されない理由を誰かが教えてくれますか?

0 投票する
1 に答える
508 参照

java - StdSerializer Jackson で JsonView を使用する方法

StdSerializer を拡張してオブジェクトのリストを json の多くのオブジェクトに変換するシリアライザーを作成します。

から

シリアライザーのおかげで機能しています。

しかし、@JsonView を同時に使用することはできません。Jackson は要素内の注釈を考慮せず、 serializerProvider.getActiveView()1 回の再帰呼び出しで情報を失いました。

どうすれば問題を解決できますか。多分 StdSerializer は良い解決策ではありません。または、メソッドを使用して StdSerializer 内の JsonView を考慮する方法を見逃しています