我有一个域对象,用于以下两种不同的服务:
public class PersonDetails {
private String personId;
private String personMaritalStatus;
private String personFirstName;
private String personLastName;
// setters and getters ...
}
并提供两种不同的服务。
第一个:
public BaseResponse getClient(@QueryParam("id") @DefaultValue("-1") String id)
{
}
此服务应返回json,如下所示:
{ "personId":12,
"personMaritalStatus":"married",
"personFirstname" :"abc",
"personLastname":"pqr" }
第二项服务:
public BaseResponse getClientName(@QueryParam("id") @DefaultValue("-1") String id)
{
}
此服务应返回json,如下所示:
{"personFirstname" :"abc"}
因此,如果我使用@JsonSerialize(using=PersonDetailsSerializer.class)
而不是域对象,则序列化程序类将如下所示:
public class PersonDetailsSerializerextends JsonSerializer<PersonDetails>
{
@Override
public void serialize(PersonDetails personDetails,
JsonGenerator jsonGenerator,
SerializerProvider serializerProvider)
throws IOException, JsonProcessingException {
jsonGenerator.writeStartObject();
jsonGenerator.writeStringField("personFirstname", personDetails.getpersonFirstName());
jsonGenerator.writeEndObject();
}
}
然后它也会影响getPerson服务的响应。
那么我如何使用服务级别序列化或使用JACKSON来处理这个...
答案 0 :(得分:0)
您可以使用两个不同的ObjectMappers,一个使用MixIn,另一个不使用。
abstract class PersonNameMixIn {
@JsonIgnore()
abstract String getPersonLastName();
@JsonIgnore()
abstract String getPersonMaritalStatus();
}
public getClientName() {
ObjectMapper mapper = new ObjectMapper();
mapper.getSerializationConfig().addMixInAnnotations(PersonDetails.class, PersonNameMixIn.class);
mapper.writeValue(writer, person);
}
public getClient() {
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(writer, person);
}