【发布时间】:2017-02-15 15:53:42
【问题描述】:
我有一个生成 JSON 的控制器,我从这个控制器返回一个实体对象,该对象由 Jackson 自动序列化。
现在,我想避免基于传递给控制器的参数返回一些字段。我查看了使用 FilterProperties / Mixins 等完成此操作的示例。但是我看到的所有示例都要求我使用 ObjectMapper 手动序列化/反序列化 bean。有没有办法在没有手动序列化的情况下做到这一点?我的代码与此类似:
@RestController
@RequestMapping(value = "/myapi", produces = MediaType.APPLICATION_JSON_VALUE)
public class MyController {
@Autowired
private MyService myService;
@RequestMapping(value = "/test/{variable}",method=RequestMethod.GET)
public MyEntity getMyEntity(@PathVariable("variable") String variable){
return myservice.getEntity(variable);
}
}
@Service("myservice")
public class MyService {
@Autowired
private MyEntityRepository myEntityRepository;
public MyEntity getEntity(String variable){
return myEntityRepository.findOne(1L);
}
}
@Entity
@Table(name="my_table")
@JsonIgnoreProperties(ignoreUnknown = true)
public class MyEntity implements Serializable {
@Column(name="col_1")
@JsonProperty("col_1")
private String col1;
@Column(name="col_2")
@JsonProperty("col_2")
private String col2;
// getter and setters
}
现在,根据传递给控制器的“变量”值,我想显示/隐藏 MyEntity 的 col2。而且我不想手动序列化/反序列化类。有没有办法做到这一点?我可以从外部更改 Mapper Jackson 用于根据“变量”的值对类进行序列化吗?
【问题讨论】:
-
我对@987654322@ 的回答对您有用还是您仍有一些问题?
标签: java json spring-boot jackson