Зарегистрированный по умолчанию поставщик сериализации JSON работает с теми же аннотациями, что и JAXB (который сам обрабатывает сериализацию XML).Обычно это является преимуществом, так как это означает, что вам нужно только добавить один набор аннотаций и, конечно, не нужно писать какой-либо код прямой сериализации самостоятельно.
Но это равно можно выполнять больше работы по сериализации самостоятельно.
@Produces("application/json")
@Provider
public class FlightsWriter implements MessageBodyWriter<Flights> {
public boolean isWriteable(Class<?> type, Type genericType,
Annotation[] annotations, MediaType mediaType) {
return type instanceof Flights; // Simplest possible
}
public long getSize(Flights flights,
Class<?> type, Type genericType,
Annotation[] annotations, MediaType mediaType) {
return -1; // Or real size if you can work it out!
}
public void writeTo(Flights flights,
Class<?> type, Type genericType,
Annotation[] annotations, MediaType mediaType,
MultivaluedMap<String,Object> httpHeaders,
OutputStream entityStream) throws IOException,
WebApplicationException {
// Put your code to write the JSON here...
}
}
Имейте в виду, что это лот работы, поэтому большинство людей используют встроенный движок и добавляют аннотации JAXB.