目前,我正在使用SpringData构建我的宁静项目。
我正在使用Page findAll(Pageable pageable,X condition,String ... columns); ,此方法。结果如下:
{
"content": [
{
"id": 2,
"ouId": 1,
"pClassId": 3,
"isPublic": 0,
"accessMethod": 3,
"modifierName": null
}
],
"last": true,
"totalPages": 1,
"totalElements": 3,
"number": 0,
"size": 10,
"sort": [
{
"direction": "DESC",
"property": "id",
"ignoreCase": false,
"nullHandling": "NATIVE",
"ascending": false,
"descending": true
}
],
"first": true,
"numberOfElements": 3
}
问题是如何在内容中隐藏某些特定的json字段? 而且@JsonIgnore注释不灵活,我在不同API中需要的字段是不同的。
我试图编写注释,但是在处理Page时,我发现内容不可修改。
所以,希望有人能帮助我。
答案 0 :(得分:1)
如果您不想在Pojo上添加注释,也可以使用Genson。
这里是如何排除不带任何注释的字段(如果需要,也可以使用注释,但是可以选择)。
re=$(docker-compose -f prod.yml restart 2>&1)
使用flexjson或
Genson genson = new Genson.Builder().exclude("securityCode", User.class).create();
// and then
String json = genson.serialize(user);
答案 1 :(得分:1)
您必须使用自定义序列化,如下所示:
@JsonComponent
public class MovieSerializer extends JsonSerializer<Movie> {
@Override
public void serialize(Movie movie, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeStartObject();
// The basic information of a movie
jsonGenerator.writeNumberField("id", movie.getId());
jsonGenerator.writeStringField("name", movie.getName());
jsonGenerator.writeStringField("poster", movie.getPoster());
jsonGenerator.writeObjectField("releaseDate", movie.getReleaseDate());
jsonGenerator.writeObjectField("runtime", movie.getRuntime());
jsonGenerator.writeStringField("storyline", movie.getStoryline());
jsonGenerator.writeStringField("rated", movie.getRated());
jsonGenerator.writeNumberField("rating", movie.getRating());
jsonGenerator.writeEndObject();
}
}
然后用以下内容注释您的模型类:@JsonSerialize(using = MovieSerializer.class)