Json 视图不限制响应中的字段
Json View doesn't restrict the fields in the response
我只需要在回复中发送 1 个带有 @JsonView 注释的字段(在我的例子中:eNumber)。此外,只有当调用来自也具有 JsonView 注释的 Controller1 时,才必须如此。
但是,当调用来自未使用 @JsonView 注释的 Controller2 时,也会发送 eNumber 字段值。我在这里错过了什么?
下面是我的代码:
DTO:
public class MyClass {
@JsonView(Views.InternalRequest.class)
public String getEnumber() {
return eNumber;
}
.... other fields
}
控制器 类 :
@RequestMapping("/api/ctr")
public class Controller1 {
@GetMapping(value = "/{serviceId}/eva", produces = MediaType.APPLICATION_JSON_VALUE)
@JsonView(Views.InternalRequest.class)
public ResponseEntity<MyClass> findAllEva() {
return ResponseEntity.ok(new MyClass());
}
}
@RequestMapping("/api/abcd")
public class Controller2 {
@GetMapping(value = "/{serviceId}/evss", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<MyClass> findAllEvs() {
return ResponseEntity.ok(new MyClass());
}
}
查看:
public class Views {
public static class InternalRequest {
}
}
我认为您需要执行以下操作:
- 定义两个视图;一个用于内部,一个用于 public.
- 注释字段而不是 getter(我相信,不是 100% 确定这一步)。
- 用“@JsonView(Views.Public.class)”注释 Controller2 方法
我只需要在回复中发送 1 个带有 @JsonView 注释的字段(在我的例子中:eNumber)。此外,只有当调用来自也具有 JsonView 注释的 Controller1 时,才必须如此。 但是,当调用来自未使用 @JsonView 注释的 Controller2 时,也会发送 eNumber 字段值。我在这里错过了什么?
下面是我的代码:
DTO:
public class MyClass {
@JsonView(Views.InternalRequest.class)
public String getEnumber() {
return eNumber;
}
.... other fields
}
控制器 类 :
@RequestMapping("/api/ctr")
public class Controller1 {
@GetMapping(value = "/{serviceId}/eva", produces = MediaType.APPLICATION_JSON_VALUE)
@JsonView(Views.InternalRequest.class)
public ResponseEntity<MyClass> findAllEva() {
return ResponseEntity.ok(new MyClass());
}
}
@RequestMapping("/api/abcd")
public class Controller2 {
@GetMapping(value = "/{serviceId}/evss", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<MyClass> findAllEvs() {
return ResponseEntity.ok(new MyClass());
}
}
查看:
public class Views {
public static class InternalRequest {
}
}
我认为您需要执行以下操作:
- 定义两个视图;一个用于内部,一个用于 public.
- 注释字段而不是 getter(我相信,不是 100% 确定这一步)。
- 用“@JsonView(Views.Public.class)”注释 Controller2 方法