Skip to content

Instantly share code, notes, and snippets.

@varren
Last active May 22, 2016 10:49
Show Gist options
  • Save varren/35c4ede769499b1290f98e39a2f85589 to your computer and use it in GitHub Desktop.
Save varren/35c4ede769499b1290f98e39a2f85589 to your computer and use it in GitHub Desktop.
public class ListTest {
public static void main(String[] args) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
List<String> list1 = Arrays.asList("1", "2", "3");
PagedList<String> pageList1 = new PagedList<String>(list1, 1000);
System.out.println(mapper.writeValueAsString(pageList1));
List<POJO> list = Arrays.asList(new POJO(1), new POJO(2), new POJO(3));
PagedList<POJO> pageList = new PagedList<POJO>(list, 1000);
System.out.println(mapper.writeValueAsString(pageList));
}
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public static class PagedList<E> implements List<E> {
@JsonProperty
private List<E> list;
@JsonProperty
private long totalRecords; //Getter-setters are added
public PagedList(List<E> list) {
super();
this.list = list;
}
public PagedList(List<E> list, long totalRecords) {
super();
this.list = list;
this.totalRecords = totalRecords;
}
@JsonIgnore
@Override
public boolean isEmpty() {
return false;
}
@Override
public int size() {
return 0;
}
@Override
public boolean contains(Object o) {
return false;
}
@Override
public Iterator<E> iterator() {
return null;
}
@Override
public Object[] toArray() {
return new Object[0];
}
@Override
public <T> T[] toArray(T[] a) {
return null;
}
@Override
public boolean add(E e) {
return false;
}
@Override
public boolean remove(Object o) {
return false;
}
@Override
public boolean containsAll(Collection<?> c) {
return false;
}
@Override
public boolean addAll(Collection<? extends E> c) {
return false;
}
@Override
public boolean addAll(int index, Collection<? extends E> c) {
return false;
}
@Override
public boolean removeAll(Collection<?> c) {
return false;
}
@Override
public boolean retainAll(Collection<?> c) {
return false;
}
@Override
public void clear() {
}
@Override
public boolean equals(Object o) {
return false;
}
@Override
public int hashCode() {
return 0;
}
@Override
public E get(int index) {
return null;
}
@Override
public E set(int index, E element) {
return null;
}
@Override
public void add(int index, E element) {
}
@Override
public E remove(int index) {
return null;
}
@Override
public int indexOf(Object o) {
return 0;
}
@Override
public int lastIndexOf(Object o) {
return 0;
}
@Override
public ListIterator<E> listIterator() {
return null;
}
@Override
public ListIterator<E> listIterator(int index) {
return null;
}
@Override
public List<E> subList(int fromIndex, int toIndex) {
return null;
}
}
public static class POJO {
@JsonProperty
private int testVal;
public POJO(int testVal) {
this.testVal = testVal;
}
}
}
@varren
Copy link
Author

varren commented May 21, 2016

Output:

{"list":["1","2","3"],"totalRecords":1000}
{"list":[{"testVal":1},{"testVal":2},{"testVal":3}],"totalRecords":1000}

@govind-s
Copy link

It works fine using normal ObjectMapper. For using Spring, we need to add some more configuration. Project for reference : Spring-Boot-Jdbc-Template

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment