第一个想法
您可以将您的请求(所选字段)和结果(用户)包装在 REST 控制器中,例如在某个类中,例如GraphResponse。
如果您在 REST 控制器中的映射返回 GraphResponse,Jackson 会尝试对其进行序列化。
因此,您可以为该类添加自己的序列化器:
public class GraphResponseSerializer extends JsonSerializer<GraphResponse> {
@Override
public void serialize(GraphResponse response, JsonGenerator jsonGenerator,
SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
// use jsonGenerator to write the JSON-stuff
}
}
您可以通过JacksonConfiguration 注册该序列化程序,也可以使用如下注解:
@JsonSerialize(using = GraphResponseSerializer.class)
public class GraphResponse {
// setter getter for "fields"
// setter getter for the actual response-object
}
第二个想法
您可以通过添加自己的 BeanSerializerModifier 来修改 bean/实体的序列化方式,这由 (AFAIR) 负责。
第三个想法
您可以添加自己的HttpMessageConverter,它处理对象到http-output 和http-input 到对象的转换。由于 Jackson 被执行,因为 MappingJackson2HttpMessageConverter 被自动注册,你也可以覆盖 MappingJackson2HttpMessageConverter 并实现一些东西来关闭序列化......
第四个想法
在一些项目中,我们使用了 GraphQL (http://graphql.org/),您可以在其中使用图形查询,它非常强大,可以根据实体为您完成所有过滤等。还有一个用于 GraphQL 的 spring-boot-starter,所以你可以很容易地将它添加到 jhipster 项目中