Jackson and Gson can handle it, but you have to add a lot of boilerplate to make it work - it doesn’t currently work out of the box. My point is, Optional is a bizarre solution from Oracle to counter the null problem - they even mention how Groovy did it using the elvis operator in their docs and went and implemented it not using the elvis operator.
http://www.oracle.com/technetwork/articles/java/java8-optional-2175753.html