我正在从API获得作为的响应
Response response=Response.ok(map,MediaType.APPLICATION_JSON_TYPE).build();
return response
但我希望在返回响应时排除某些字段。
地图的格式如下:
Map<String,OuterClass> map;
class OuterClass{
int a;
int b;
Map<String,InnerClass> map2;
}
Class InnerClass{
int c;
int d;
}
例如,json响应不应包括InnerClass中的字段"d"。我怎样才能做到这一点?
为排除属性创建Set
并使用removeIf
,
Set<String> excludeProperties=null;
map.entrySet()
.removeIf(e->excludeProperties.contains(e.getKey()));
return Response.ok(map,MediaType.APPLICATION_JSON_TYPE).build()
您可以JsonIgnore属性:
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
<scope>provided</scope>
</dependency>
Class InnerClass{
int c;
@JsonIgnore
int d;
}
参考:https://fasterxml.github.io/jackson-core/javadoc/1.9/org/codehaus/jackson/annotate/package-summary.html