ホームページ >Java >&#&チュートリアル >Spring MVC JSON 応答のフィールドを動的に無視する方法は?
Spring MVC では、シリアル化時に Java オブジェクトからの特定のフィールドを動的に無視する必要があるシナリオが発生する場合があります。それらは JSON として保存されます。これは、特定のクライアントまたはエンドポイントの機密データまたは無関係なデータを含むオブジェクトを処理する場合に特に便利です。
Hibernate の @Entity アノテーションが付けられた次の Java モデル クラスを考えてみましょう。
<code class="java">@Entity @Table(name = "user", catalog = "userdb") @JsonIgnoreProperties(ignoreUnknown = true) public class User implements java.io.Serializable { // ... Class definition omitted for brevity }</code>
Spring MVC 内コントローラーの場合、データベースから User オブジェクトを取得し、JSON 応答として返します。
<code class="java">@Controller public class UserController { @Autowired private UserService userService; @RequestMapping(value = "/getUser/{userId}", method = RequestMethod.GET) @ResponseBody public User getUser(@PathVariable Integer userId) throws Exception { User user = userService.get(userId); user.setCreatedBy(null); user.setUpdatedBy(null); return user; } }</code>
デフォルトでは、User オブジェクトの JSON 表現にはそのすべてのフィールドが含まれます。ただし、encryptedPwd、createdBy、updatedBy などの機密フィールドを特定の応答から除外したい場合があります。
これを実現する 1 つの方法は、オブジェクトを返す前に不要なフィールドを手動で null に設定することです。ただし、この方法はエラーが発生しやすく、非効率的になる可能性があります。
より洗練された解決策は、@JsonIgnoreProperties アノテーションを使用することです。注釈内のプロパティ名を使用して、無視するフィールドを指定できます。
<code class="java">@Entity @Table(name = "user", catalog = "userdb") @JsonIgnoreProperties(ignoreUnknown = true, value = {"encryptedPwd", "createdBy", "updatedBy"}) public class User implements java.io.Serializable { // ... Class definition omitted for brevity }</code>
この注釈を配置すると、フィールド encryptedPwd、createdBy、および updatedBy が JSON 表現から除外されます。
または、個々のフィールドで @JsonIgnore アノテーションを使用できます。
<code class="java">@Entity @Table(name = "user", catalog = "userdb") @JsonIgnoreProperties(ignoreUnknown = true) public class User implements java.io.Serializable { @JsonIgnore private String encryptedPwd; private String createdBy; // ... Class definition omitted for brevity }</code>
encryptedPwd フィールドに @JsonIgnore アノテーションを付けることで、JSON 応答から明示的に除外します。
Github の例: [JsonIgnore の例](https://github.com/java089/spring-mvc-exclude-fields-json)
以上がSpring MVC JSON 応答のフィールドを動的に無視する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。