Classe ObjectMapper a Jackson
ObjectMapper és una de les classes més importants disponibles a el Jackson biblioteca. S'utilitza per llegir i escriure dades JSON. És responsable de llegir les dades des o cap al fitxer POJO i des d'un model d'arbre JSON.
Hi ha les següents característiques de la classe ObjectMapper:
- Admet conceptes avançats com ara Polimorfisme i Reconeixement d'objectes.
- És molt personalitzable per treballar amb diferents estils de contingut JSON.
- Funciona com a fàbrica per a l'avanç ObjectReader i ObjectWriter classes.
La classe ObjectMapper es declara de la manera següent:
public class ObjectMapper extends ObjectCodec implements Versioned, Serializable
Classes imbricades
La taula següent defineix les classes que estenen la classe ObjectMapper o, es pot dir, classes imbricades de la classe ObjectMapper.
| Classe | Descripció |
|---|---|
| DefaultTypeResolverBuilder | És un personalitzat TypeResolverBuilder classe que s'utilitza per obtenir els constructors de resolució de tipus, amb els quals podem utilitzar 'escriptura per defecte'. |
| Escriptura per defecte | Per tal d'especificar el tipus de tipus, s'utilitzen enumeracions amb el mètode enableDefaultTyping(). |
Ara, entenem els camps, constructors i mètodes de la classe ObjectMapper:
Camps de la classe ObjectMapper
protected DefaultDeserializationContext _deserializationContext
És un objecte de context de plànol que s'emmagatzema per permetre subclasses personalitzades.
protected DeserializationConfig _deserializationConfig
És un objecte de configuració que s'utilitza per definir la configuració global bàsica per al procés de deserialització.
protegit JsonFactory jsonFactory
Per crear una instància de JsonParser i JsonGenerator, s'utilitza JsonFactory.
protegit InjectableValues _injectableValues
És un proveïdor que s'utilitza per injectar els valors en POJO deserialitzats.
protegit ConfigOverrides _propertyOverrides
S'utilitza per accedir a les substitucions de configuració per tipus actives actualment.
protegit SimpleMixInResolver _mixIns
És un mapeig que s'utilitza per definir una manera d'aplicar anotacions mixtes. El mapatge es fa de la següent manera:
Clau: Escriviu per rebre anotacions addicionals.
Valor: Tipus que té anotacions per 'mesclar'
protegit Set _registeredModuleTypes
És un conjunt que defineix el conjunt de tipus de mòduls que s'han registrat.
protegit SerializationConfig _serializationConfig
També és un objecte de configuració que s'utilitza per definir la configuració global bàsica per al procés de serialització.
ConcurrentHashMap protegit
És un mapa que s'utilitza per fer un seguiment dels deserialitzadors a nivell d'arrel. És un mapa de nivell principal.
protegit SerializerFactory _serializerFactory
És una fàbrica que s'utilitza per construir els serialitzadors.
SubtypeResolver protegit _subtypeResolver
S'utilitza per registrar subtipus i per resoldre'ls per a super/subtipus segons sigui necessari.
protegit TypeFactory _typeFactory
És una fàbrica que s'utilitza per crear instàncies JavaType. Són necessaris per permetre als mòduls afegir més maneig de tipus personalitzat.
protected DefaultSerializerProvider _serializerProvider
És un objecte que s'encarrega de gestionar l'accés als serialitzadors utilitzats per a la serialització.
BaseSettings estàtica protegida DEFAULT_BASE
És la configuració bàsica que inclou els valors predeterminats utilitzats per a totes les instàncies d'ObjectMapper.
Constructors de la classe ObjectMapper
Hi ha els següents constructors de la classe ObjectMapper:
| Constructor | Descripció |
|---|---|
| ObjectMapper() | És un constructor predeterminat que s'utilitza per construir una instància que utilitza per defecte JsonFactory, SerializerProvider, i BeanSerializerFactory. |
| ObjectMapper (fàbrica JsonFactory) | S'utilitza per construir una instància que utilitza la JsonFactory donada. La JsonFactory donada s'utilitza per construir JsonParsers i/o JsonGenerators. |
| ObjectMapper (fàbrica JsonFactory, proveïdor SerializerProvider 1, proveïdor DeserializerProvider 2) | S'utilitza per construir una instància que utilitza el donat JsonFactory, SerializerProvider, i DeserializerProvider. La JsonFactory donada s'utilitza per construir JsonParsers i/o JsonGenerators. |
| ObjectMapper protegit (mapeador d'ObjectMapper) | És un constructor de còpia per suportar copy(). |
Mètodes de classe ObjectMapper
La classe ObjectMapper defineix els mètodes següents:
| Mètode | Tipus de retorn | Descripció |
|---|---|---|
| _checkInvalidCopy(Exp de classe) | buit | S'utilitza per comprovar una còpia no vàlida. |
| _configAndWriteValue(JsonGenerator g, valor de l'objecte) | buit | S'utilitza per configurar el generador quan sigui necessari i després realitzar la funcionalitat d'escriptura. |
| _convert(Objecte de valor, JavaType aValueType) | Objecte | S'utilitza per obtenir la implementació real de la conversió. Aquí, els mètodes de lectura i escriptura no s'utilitzen per al codi. |
| _initForReading(JsonParser p) | JsonToken | S'utilitza per assegurar-se si l'analitzador donat està preparat per llegir contingut per a l'enllaç de dades o no. |
| _findRootDeserializer(DeserializationContext ctxt, JavaType valueType) | JsonDeserializer | Per al valor de nivell arrel passat, si volem localitzar el deserialitzador, utilitzem aquest mètode. |
| _newReader (configuració de deserialització de la configuració) Mètode semblant:
| ObjectReader | És un mètode de fàbrica, és a dir, utilitzat per obtenir les instàncies ObjectReader del subtipus adequat. Per utilitzar aquest mètode, és necessari que les subclasses han d'anul·lar. |
| _newWriter (configuració de SerializationConfig) Mètodes semblants:
| ObjectWriter | És un mètode de fàbrica, és a dir, utilitzat per obtenir les instàncies ObjectWriter del subtipus adequat. Per utilitzar aquest mètode, és necessari que les subclasses han d'anul·lar. |
| _readValue(DeserializationConfig cfg, JsonParser p, JavaType valueType) | Objecte | S'utilitza per obtenir un objecte que defineix la lectura de valors i l'operació d'enllaç. |
| _serializerProvider(configuració de SerializationConfig) | DefaultSerializerProvider | És un mètode d'ajuda anul·lable que s'utilitza per construir SerializerProvider. |
| acceptJsonFormatVisitor(Tipus de classe, visitant JsonFormatVisitorWrapper) Mètode semblant:
| buit buit | Si volem visitar la jerarquia de tipus d'un tipus concret amb el visitant especificat, utilitzem aquest mètode. |
| addHandler(DeserializationProblemHandler h) | ObjectMapper | Per tal de gestionar problemes especificats durant la deserialització, utilitzem un DeserializationProblemHandler especificat i per afegir el controlador, utilitzem aquest mètode. |
| addMixIn(Class target, Class mixinSource) | ObjectMapper | Per tal d'utilitzar l'anotació mixta per a una classe o interfície augmentadora especificada, utilitzem aquest mètode per afegir-la. |
| canDeserialize (tipus JavaType) | booleà | S'utilitza per comprovar si el mapeador pot deserialitzar un objecte d'un tipus especificat o no. |
| canDeserialize (tipus JavaType, causa AtomicReference) | booleà | És similar al mètode anterior. L'única diferència és que pot tornar l'element llançable que es va llançar en el moment de construir el serialitzador. El llançable es pot utilitzar per esbrinar el problema real. |
| canSerialize (tipus de classe) | booleà | S'utilitza per comprovar si el mapeador pot serialitzar un objecte d'un tipus especificat o no. |
| canSerialize (tipus de classe, causa AtomicReference) | booleà | És similar al mètode anterior. L'única diferència és que pot tornar l'element llançable que es va llançar en el moment de construir el serialitzador. El llançable es pot utilitzar per esbrinar el problema real. |
| clearProblemHandlers() | ObjectMapper | És un dels mètodes que s'utilitzen per eliminar totes les instàncies de DeserializationProblemHandlers del mapeador que estan registrades. |
| configure(DeserializationFeature f, estat booleà) mètodes semblants:
| ObjectMapper | S'utilitza per canviar l'estat d'una funció de deserialització activada/desactivada, Json Generator, JsonParser, Mapper o funció de serialització per al mapeador d'objectes, instàncies del generador, instàncies de l'analitzador, instància de mapeador o mapeador d'objectes. |
| constructType (Tipus t) | JavaType | Si volem construir JavaType a partir d'un tipus donat sense context explícit, utilitzem aquest mètode. |
| convertValue(Object fromValue, Class toValueType) Mètodes semblants:
| T | Si volem realitzar una conversió en dos passos d'un valor determinat en una instància d'un tipus de valor determinat, utilitzem el mètode converValue(). |
| createArrayNode() | ArrayNode | S'utilitza per crear ArrayNode. |
| defaultClassIntrospector() | ClassIntrospector | Si volem fer servir el ClassIntrospector per defecte, utilitzem aquest mètode d'ajuda per a anul·lar per construir-lo. |
| desactivar (funció de deserialització) Mètodes semblants:
| ObjectMapper | S'utilitza per desactivar determinats DeserializationConfig, JsonGenerator.Features per a instàncies de l'analitzador, JsonParser.Features per a instàncies de l'analitzador del mapa d'objectes. |
| disableDefaultTyping() | ObjectMapper | Moltes vegades, hem de desactivar la inclusió automàtica d'informació de tipus i, per a això, utilitzem aquest mètode. |
habilitar (funció de deserialització)
| ObjectMapper | S'utilitza per habilitar la DeserializationConfig donada, JsonGenerator.Features per a instàncies de l'analitzador, JsonParser.Features per a instàncies de l'analitzador del mapa d'objectes. |
| enableDefaultTyping() Mètodes semblants:
| ObjectMapper | Per utilitzar la inclusió automàtica d'informació de tipus per a la deserialització de tipus polimòrfics, utilitzem aquest mètode per habilitar-lo. |
| findAndRegisterModules() | ObjectMapper | És similar al mètode mapper.registerModules(mapper.findModules()). |
| trobar mòduls() Mètodes semblants:
| Llista | S'utilitza per localitzar els mètodes disponibles. El mètode utilitza la funció JDK ServiceLoader amb SPI proporcionat pel mòdul. |
| getDateFormat() | Format de data | S'utilitza per obtenir el format de la data. |
| getDeserializationConfig() | DeserializationConfig | S'utilitza per obtenir l'objecte DeserializationConfig compartit per defecte. L'objecte retornat defineix els paràmetres de configuració per a la deserialització. |
| getDeserializationContext() | Context de deserialització | S'utilitza per obtenir l'actual DeserializationContext. |
| getFactory() | JsonFactory | Si el mapeador necessita construir un analitzador i generadors Json, necessita la fàbrica json, i per aconseguir-ho, utilitzem el mètode getFactory(). |
| getInjectableValues() | Valors injectables | S'utilitza per obtenir valors injectables. |
| getJsonFactory() | JsonFactory | És un mètode obsolet per obtenir la fàbrica Json. |
| getNodeFactory() | JsonNodeFactory | S'utilitza per obtenir el JsonNodeFactory que fa servir el mapeador en el moment de construir directament instàncies arrel de JsonNode per als arbres. |
| getPropertyNamingStrategy() | PropertyNamingStrategy | Com el seu nom indica, s'utilitza per a l'estratègia de denominació de la propietat. |
| getSerializationConfig() | SerializationConfig | S'utilitza per obtenir l'objecte SerializationConfig compartit per defecte. L'objecte retornat defineix els paràmetres de configuració per a la serialització. |
| getSerializerFactory() | SerializerFactory | S'utilitza per obtenir la SerializerFactory actual. |
| getSerializerProvider() | SerialitzadorProvider | És un descriptor de accés per a la fàbrica, que s'utilitza per crear instàncies cridant a DefaultSerializerProvider.createInstance(SerializationConfig, SerializerFactory). |
| getSerializerProviderInstance() | SerialitzadorProvider | És un descriptor que s'utilitza per construir i retornar una instància del SerializerProvider, que podem utilitzar per accedir als serialitzadors. |
| getSubtypeResolver() | SubtypeResolver | S'utilitza per accedir a la resolució de subtipus en ús. |
| getTypeFactory() | TypeFactory | És un descriptor que s'utilitza per obtenir una instància de la TypeFactory configurada actualment. |
| getVisibilityChecker() | VisibilityChecker | S'utilitza per accedir al verificador de visibilitat configurat actualment. |
| isEnabled (Funció de deserialització f) Mètodes similars:
| booleà | El mètode isEnable() i les seves variacions s'utilitzen per comprovar si la funció específica de deserialització, JsonFactory, JsonGenerator, JsonParser, Mapper o Serialization està habilitada o no. |
| mixInCount() | int | S'utilitza per obtenir el recompte de mixIn. |
| lector () Mètodes similars:
| ObjectReader | El mètode reader() i les seves variacions són els mètodes de fàbrica que s'utilitzen per construir una instància d'ObjectReader. En funció del requisit, podem passar la variant de codificació Base64 per a dades binàries codificades amb Base64, atributs predeterminats, funcions activades, valors injectables, JsonNodeFactory per construir arbres JSON. |
| readerFor (tipus de classe) | ObjectReader | És un mètode de fàbrica que s'utilitza per construir ObjectReader, permetent operacions de lectura o actualització per a instàncies del tipus especificat. |
| readerFor (tipus JavaType) | ObjectReader | És un mètode de fàbrica que s'utilitza per construir ObjectReader, permetent operacions de lectura o actualització per a instàncies de JavaType especificat. |
| readerFor(Tipus de referència de tipus) | ObjectReader | És un mètode de fàbrica que s'utilitza per construir ObjectReader, permetent operacions de lectura o actualització per a instàncies de TypeReference donat. |
| readerForUpdating(Valor de l'objecteToUpdating) | ObjectReader | És un mètode de fàbrica que s'utilitza per construir ObjectReader que permet operacions d'actualització per a l'objecte donat. |
| readerWithView (visualització de classe) | ObjectReader | És un mètode de fàbrica que s'utilitza per construir ObjectReader, permetent deserialització d'objectes amb una vista JSON donada. |
readTree(byte[] contingut)
| JsonNode O T | El readTree() i les seves variacions s'utilitzen per deserialitzar el contingut JSON com un arbre expressat mitjançant un conjunt d'instàncies JsonNode. |
| readValue(byte[] src, Class valueType) Mètodes similars
| T O MappingIterator | El readValue() i les seves variacions s'utilitzen per deserialitzar el contingut JSON
|
| readValues(JsonParser p, Class valueType) Mètodes semblants:
| MappingIterator | El readValues() i les seves variacions s'utilitzen per llegir la seqüència d'objectes del flux d'analitzador. |
| registerModule (mòdul de mòdul) Mètodes semblants:
| ObjectMapper | El registerModule() i les seves variacions s'utilitzen per registrar un mòdul que té la capacitat d'estendre la funcionalitat proporcionada pel mapeador. |
| registerSubtypes(TipusNominat... tipus) | buit | S'utilitza per registrar la classe donada com a subtipus. En fer-ho, la resolució basada en el nom del tipus pot enllaçar supertipus amb subtipus. |
| setAnnotationIntrospector(AnotationIntrospector ai) | ObjectMapper | S'utilitza per configurar AnnotationIntrospector, que s'utilitza per la instància del mapeador tant per a la serialització com per a la deserialització. |
| setAnnotationIntrospectors(AnnotationIntrospector serializerAI, AnnotationIntrospector deserializerAI) | ObjectMapper | S'utilitza per canviar la instància d'AnnotationIntrospector utilitzada per la instància del mapeador actual per a la serialització i la deserialització. |
| setBase64Variant(Base64Variant v) | ObjectMapper | S'utilitza per configurar la Base64Variant predeterminada que utilitzaran els serialitzadors i deserialitzadors byte[]. |
| setConfig (configuració de deserialització de la configuració) | ObjectMapper | Per tal de realitzar la substitució de l'objecte DeserializationConfig subjacent, utilitzem aquest mètode. |
| setConfig (configuració de SerializationConfig) | ObjectMapper | Per tal de substituir l'objecte SerializationConfig subjacent amb paràmetres de configuració específics de la serialització, utilitzem aquest mètode. |
| setDateFormat(DateFormat dataFormat) | ObjectMapper | S'utilitza per configurar el DateFormat predeterminat perquè l'utilitzi en el moment de serialitzar els valors de temps com a cadenes o des-serialitzar des de cadenes JSON. |
| setDefaultPrettyPrinter(PrettyPrinter pp) | ObjectMapper | S'utilitza per especificar la PrettyPrinter per utilitzar-la quan la 'impressió bonica per defecte' està habilitada. |
| setDefaultTyping (escriptor de TypeResolverBuilder) | ObjectMapper | S'utilitza per permetre la inclusió automàtica d'informació de tipus. |
| setHandlerInstantiator(HandlerInstantiator hola) | Objecte | S'utilitza per configurar HandlerInstantiator perquè s'utilitzi per crear instàncies de controladors. |
| setFilterProvider(FilterProvider filterProvider) | ObjectMapper | S'utilitza per configurar el mapeador actual perquè utilitzi el FilterProvider especificat per assignar els identificadors de filtre a instàncies de filtre reals. |
| setInjectableValues(InjectableValues injectableValues) | ObjectMapper | S'utilitza per configurar InjectableValues que s'utilitza per trobar valors per injectar. |
| setLocale(Local l) | ObjectMapper | S'utilitza per anul·lar la configuració regional predeterminada que s'utilitzarà per al format. |
| setMixInResolver(ClassIntrospector.MixInResolver resoldre) | ObjectMapper | Utilitzem aquest mètode per especificar el resolutor donat per localitzar les classes combinades a utilitzar, anul·lant els mapes afegits directament. |
| setMixInAnnotations(Mapa | buit | És un mètode amortitzat per definir l'anotació mixta. |
| setNodeFactory (JsonNodeFactory f) | ObjectMapper | S'utilitza per especificar JsonNodeFactory que s'utilitzarà per construir nodes d'arbre a nivell arrel. |
| setMixIns(Mapa | ObjectMapper | S'utilitza per definir les anotacions combinades que s'utilitzen per augmentar les anotacions que tenen les classes processables. |
| setPropertyInclusion(JsonInclude.Value incl) | ObjectMapper | S'utilitza per establir l'estratègia d'inclusió de propietats POJO per defecte per a la serialització. |
| setPropertyNamingStrategy(PropertyNamingStrategy s) | ObjectMapper | S'utilitza per establir l'estratègia de nomenclatura de propietats personalitzada a utilitzar. |
| setSerializerFactory(SerializerFactory f) | ObjectMapper | S'utilitza per configurar la SerializerFactory específica que s'utilitzarà per construir serialitzadors (bean). |
| setSerializerProvider(DefaultSerializerProvider p) | ObjectMapper | S'utilitza per establir la instància de SerializerProvider 'plan' per utilitzar-la com a base per a les instàncies reals del proveïdor que s'utilitzaran per gestionar la memòria cau de les instàncies de JsonSerializer. |
| setSubtypeResolver(SubtypeResolver str) | ObjectMapper | S'utilitza per configurar el solucionador de subtipus personalitzat que s'utilitzarà. |
| setTimeZone(TimeZone tz) | ObjectMapper | S'utilitza per anul·lar la zona horària predeterminada que s'utilitzarà per al format. |
| setTypeFactory(TypeFactory f) | ObjectMapper | S'utilitza per anul·lar la instància TypeFactory, que fa servir el mapeador actual. |
setVisibility(PropertyAccessor forMethod, JsonAutoDetect.Visibility visibility)
| ObjectMapper | El setVisibility() i la seva variació s'utilitzen per configurar el VisibilityChecker configurat actualment. La instància d'ObjectMapper retornada s'utilitza per comprovar si l'element de propietat donat es pot detectar automàticament o no. |
| treeAsTokens(TreeNode n) | JsonParser | S'utilitza per construir un JsonParser a partir de la representació d'arbre JSON. |
| treeToValue(TreeNode n, Class valueType) | T | S'utilitza per unir les dades que conté l'arbre JSON en un tipus de valor específic. |
| versió () | Versió | S'utilitza per obtenir la informació de la versió emmagatzemada i per llegir-la del jar que conté aquesta classe. |
escriptor ()
| ObjectWriter | El write() i les seves variacions s'utilitzen per construir ObjectWriter amb la configuració predeterminada, donada la variant de codificació Base64 per a dades binàries codificades en Base64, detalls d'escapament de caràcters per a la sortida, atributs predeterminats, DateFormat, proveïdor de filtres, objecte d'esquema a JsonGenerator utilitzat per escriure contingut, impressora bonica per a sagnat o funció habilitat. |
| writerFor(Tipus arrel de classe) - | ObjectWriter | S'utilitza per construir ObjectWriter per serialitzar els objectes utilitzant un tipus d'arrel especificat en lloc del tipus de valor d'execució real. |
| writerFor(JavaType rootType) | ObjectWriter | S'utilitza per construir ObjectWriter per serialitzar els objectes utilitzant un tipus d'arrel especificat en lloc del tipus de valor d'execució real. |
| writerFor(TypeReference rootType) | ObjectWriter | S'utilitza per construir ObjectWriter per serialitzar els objectes utilitzant un tipus d'arrel especificat en lloc del tipus de valor d'execució real. |
| writerWithDefaultPrettyPrinter() | ObjectWriter | És un mètode de fàbrica que s'utilitza per construir ObjectWriter per serialitzar els objectes utilitzant la impressora bastant predeterminada per al sagnat. |
writerWithType (Tipus arrel de classe)
| ObjectWriter | Aquests mètodes s'amorteixen i, en comptes d'ells, utilitzem el mètode writerFor(TypeReference). |
| writerWithView(Vista de serialització de classes) | ObjectWriter | És un mètode de fàbrica que s'utilitza per construir ObjectWriter per serialitzar objectes mitjançant la vista JSON especificada. |
| writeTree(JsonGenerator jgen, JsonNode rootNode) | buit | S'utilitza per serialitzar l'arbre JSON proporcionat mitjançant el JsonGenerator donat. |
| writeValue(Fitxer resultatFile, valor de l'objecte) | buit | S'utilitza per serialitzar el valor de Java com a sortida JSON i escriure'l al donat dossier. |
| writeValue(JsonGenerator g, valor de l'objecte). | buit | S'utilitza per serialitzar els valors de Java com a sortida JSON utilitzant el donat JsonGenerator. |
| writeValue(OutputStream out, valor de l'objecte) | buit | S'utilitza per serialitzar el valor de Java com a sortida JSON utilitzant el donat OutputStream. |
| writeValue(Writer w, valor de l'objecte) | buit | S'utilitza per serialitzar els valors de Java com a sortida JSON utilitzant el donat Escriptor. |
| writeValueAsBytes (valor de l'objecte) | byte[] | S'utilitza per serialitzar valors Java com a matriu de bytes. |
| writeValueAsString(Valor de l'objecte) | Corda | S'utilitza per serialitzar valors Java com a cadena. |
JacksonExample.java
//import required classes and package if any package javaTpoint.Jackson; import java.io.IOException; import java.util.List; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; //create class JacksonExample to understand implementation of Jackson public class JacksonExample { // main() method start public static void main(String args[]){ // create an instance of ObjectMapper class ObjectMapper mapper = new ObjectMapper(); // create a JSON string of employee details to deserilized object String stdString = '{
'students' : [
{
'stdId':'001',
'course':'MCA','+'
'firstName':'Nicholas',
'lastName':'Clemens',
'preferredFullName':'Nicholas Clemens','+'
'enrol':'S010',
'region':'indian',
'phoneNumber':'408-1234567',
'emailAddress''+':'[email protected]'
},
{
'stdId':'002',
'course':'BCA','+'
'firstName':'Sharon',
'lastName':'Lorenz',
'preferredFullName':'Sharon Lorenz','+'
'enrol':'S011',
'region':'indian',
'phoneNumber':'408-1111111',
'emailAddress''+':'[email protected]'
},
{
'stdId':'003',
'course':'Btech','+'
'firstName':'Brittany',
'lastName':'Hart',
'preferredFullName':'Brittany Hart',
''+'enrol':'S012',
'region':'indian',
'phoneNumber':'408-2222222',
'emailAddress':'[email protected]'
}
]
}'; try{ // use ObjectMapper for mapping JSON to Student Students students = mapper.readValue(stdString, Students.class); // print students System.out.println(students); // serialize students into json string stdString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(students); System.out.println(stdString); }catch (JsonParseException e) { e.printStackTrace(); }catch (JsonMappingException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); } } } //create Students class class Students { public List students; // getter and setter public List getStudent() { return students; } public void setStudent(List students) { this.students = students; } } class Student { // declare variables private String stdId; private String course; private String firstName; private String lastName; private String preferredFullName; private String enrol; private String region; private String phoneNumber; private String emailAddress; public Student(){ } // getter/setters for all variables public String getStdId() { return stdId; } public void setStdId(String stdId) { this.stdId = stdId; } public String getCourse() { return course; } public void getCourse(String course) { this.course = course; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getPreferredFullName() { return preferredFullName; } public void setPreferredFullName(String preferredFullName) { this.preferredFullName = preferredFullName; } public String getEnrol() { return enrol; } public void setEnrol(String enrol) { this.enrol = enrol; } public String getRegion() { return region; } public void setRegion(String region) { this.region = region; } public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } public String getEmailAddress() { return emailAddress; } public void setEmailAddress(String emailAddress) { this.emailAddress = emailAddress; } public String toString(){ return 'Employee [ Student Id: '+stdId+', Course: '+course+ '' + ', First Name: '+firstName+ ', Last Name: '+lastName+ '' + ', Name: '+preferredFullName+ ', Enrol No: '+enrol+ '' + ', Region: '+region+ ', Phone Number: '+phoneNumber+ '' + ', Email Address: '+emailAddress+ ' ]'; } } Sortida: