Skip to content

Instantly share code, notes, and snippets.

@rhari991
Created February 1, 2018 05:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rhari991/64a9d404d8ad69ede0ca6f2c6e6f41c3 to your computer and use it in GitHub Desktop.
Save rhari991/64a9d404d8ad69ede0ca6f2c6e6f41c3 to your computer and use it in GitHub Desktop.
An example of a custom response converter for Retrofit
class PasteListConverter implements Converter<ResponseBody, List<Paste>> {
private final Serializer serializer;
PasteListConverter() {
serializer = new Persister(new AnnotationStrategy());
}
@Override
public List<Paste> convert(ResponseBody value) throws IOException {
String originalResponse = value.string();
String correctedResponse = "<pastes>\r\n" + originalResponse + "\r\n</pastes>";
try {
PasteGroup pasteGroup = serializer.read(PasteGroup.class, correctedResponse);
return pasteGroup.getPasteList();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Root(name = "pastes", strict = false)
private static class PasteGroup {
@ElementList(name = "pastes", inline = true, required = false)
private List<Paste> pasteList;
PasteGroup(@ElementList(name = "pastes", inline = true, required = false) List<Paste> pasteList) {
this.pasteList = pasteList;
}
List<Paste> getPasteList() {
return pasteList;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment