When Jackson is ordered to associate JSON with Object.class, he does just that; but since he does not have a priori knowledge of what can be in this JSON (or which classes can be used), he should use most of the basic Java types: Maps, Lists, Numbers, Booleans and Strings. Thus, any JSON object is represented by a Map; JSON Array by List etc.
If you need a custom object, you must specify its type; or, during serialization, enable the inclusion of explicit type information ("polymorphic type processing"). This will add the class name or type name and can be used to deserialize back to the exact type.
To do this, either the type itself or one of its supertypes must use the @JsonTypeInfo annotation; or, if it is an Object property, @JsonTypeInfo for the property (field or method).
Staxman
source share