ObjectMapper-klassen i Jackson
ObjectMapper er en av de viktigste klassene som finnes i Jackson bibliotek. Den brukes til å lese og skrive JSON-data. Den er ansvarlig for å lese data fra eller til POJO-fil og til og fra en JSON-tremodell.
Det er følgende egenskaper for ObjectMapper-klassen:
- Den støtter avanserte konsepter som f.eks Polymorfisme og Gjenkjenning av objekter.
- Det er veldig tilpassbart å jobbe med forskjellige stiler av JSON-innhold.
- Det fungerer som en fabrikk for forhånd Objektleser og ObjectWriter klasser.
ObjectMapper-klassen er deklarert på følgende måte:
public class ObjectMapper extends ObjectCodec implements Versioned, Serializable
Nestede klasser
Følgende tabell definerer klassene som utvider ObjectMapper-klassen eller, kan si, nestede klasser av ObjectMapper-klassen.
| Klasse | Beskrivelse |
|---|---|
| DefaultTypeResolverBuilder | Det er en tilpasset TypeResolverBuilder klasse som brukes til å få typeoppløsere, som vi kan bruke med 'standard skriving'. |
| DefaultTyping | For å spesifisere typen typer, brukes opptellinger med enableDefaultTyping()-metoden. |
La oss nå forstå feltene, konstruktørene og metodene til ObjectMapper-klassen:
Felt i ObjectMapper-klassen
protected DefaultDeserializationContext _deserializationContext
Det er et blåkopi-kontekstobjekt som er lagret for å tillate tilpassede underklasser.
protected DeserializationConfig _deserializationConfig
Det er et konfigurasjonsobjekt som brukes til å definere de grunnleggende globale innstillingene for de-serialiseringsprosessen.
beskyttet JsonFactory jsonFactory
For å lage en forekomst av JsonParser og JsonGenerator, brukes JsonFactory.
beskyttede InjectableValues _injectableValues
Det er en leverandør som brukes til å injisere verdiene i de-serialiserte POJO-er.
beskyttet ConfigOverrides _propertyOverrides
Den brukes for å få tilgang til de aktive per-type konfigurasjonsoverstyringene.
beskyttet SimpleMixInResolver _mixIns
Det er en kartlegging som brukes til å definere en måte å bruke innblandingskommentarer på. Kartlegging gjøres på følgende måte:
Nøkkel: Skriv for å motta flere merknader.
Verdi: Type som har merknader å 'blande inn'
beskyttet Sett _registeredModuleTypes
Det er et sett som definerer settet med modultyper som er registrert.
beskyttet SerializationConfig _serializationConfig
Det er også et konfigurasjonsobjekt som brukes til å definere de grunnleggende globale innstillingene for serialiseringsprosessen.
beskyttet ConcurrentHashMap
Det er et kart som brukes til å holde styr på de-serializers på rotnivå. Det er et kart på hovednivå.
beskyttet SerializerFactory _serializerFactory
Det er en fabrikk som brukes til å konstruere serializers.
beskyttet SubtypeResolver _subtypeResolver
Den brukes til å registrere undertyper og løse dem for super/undertyper etter behov.
beskyttet TypeFactory _typeFactory
Det er en fabrikk som brukes til å lage JavaType-forekomster. De er nødvendige for å tillate moduler å legge til mer tilpasset type håndtering.
protected DefaultSerializerProvider _serializerProvider
Det er et objekt som er ansvarlig for å administrere tilgangen til serialiseringsprogrammer som brukes til serialisering.
beskyttet statisk BaseSettings DEFAULT_BASE
Det er basisinnstillinger som inkluderer standarder som brukes for alle ObjectMapper-forekomster.
Konstruktører av ObjectMapper-klassen
Det er følgende konstruktører av ObjectMapper-klassen:
| Konstruktør | Beskrivelse |
|---|---|
| ObjectMapper() | Det er en standardkonstruktør som brukes til å konstruere en forekomst som bruker standard JsonFactory, SerializerProvider, og BeanSerializerFactory. |
| ObjectMapper (JsonFactory factory) | Den brukes til å konstruere en instans som bruker den gitte JsonFactory. Den gitte JsonFactory brukes til å konstruere JsonParsers og/eller JsonGenerators. |
| ObjectMapper (JsonFactory factory, SerializerProvider provider1, DeserializerProvider provider2) | Den brukes til å konstruere en instans som bruker det gitte JsonFactory, SerializerProvider, og DeserializerProvider. Den gitte JsonFactory brukes til å konstruere JsonParsers og/eller JsonGenerators. |
| beskyttet ObjectMapper (ObjectMapper mapper) | Det er en kopi-konstruktør for å støtte copy(). |
ObjectMapper klassemetoder
ObjectMapper-klassen definerer følgende metoder:
| Metode | Returtype | Beskrivelse |
|---|---|---|
| _checkInvalidCopy(Class exp) | tomrom | Den brukes til å kontrollere ugyldig kopi. |
| _configAndWriteValue(JsonGenerator g, objektverdi) | tomrom | Den brukes til å konfigurere generatoren når det er nødvendig og deretter utføre skrivefunksjonaliteten. |
| _convert(Object fromValue, JavaType toValueType) | Gjenstand | Den brukes til å få den faktiske konverteringsimplementeringen. Her brukes ikke lese- og skrivemetoder for koden. |
| _initForReading(JsonParser p) | JsonToken | Den brukes for å sikre om den gitte parseren er klar til å lese innhold for databinding eller ikke. |
| _findRootDeserializer(DeserializationContext ctxt, JavaType valueType) | JsonDeserializer | For den beståtte rotnivåverdien, hvis vi ønsker å finne de-serializeren, bruker vi denne metoden. |
| _newReader(DeserializationConfig config) Lignende metode:
| Objektleser | Det er en fabrikkmetode, dvs. brukt for å få ObjectReader-forekomster av riktig undertype. For å bruke denne metoden er det nødvendig at underklassene må overstyre. |
| _newWriter(SerializationConfig config) Lignende metoder:
| ObjectWriter | Det er en fabrikkmetode, dvs. brukt for å få ObjectWriter-forekomster av riktig undertype. For å bruke denne metoden er det nødvendig at underklassene må overstyre. |
| _readValue(DeserializationConfig cfg, JsonParser p, JavaType valueType) | Gjenstand | Den brukes til å få et objekt som definerer verdilesing og bindingsoperasjon. |
| _serializerProvider(SerializationConfig config) | DefaultSerializerProvider | Det er en overstyrbar hjelpemetode som brukes til å konstruere SerializerProvider. |
| acceptJsonFormatVisitor(Klassetype, JsonFormatVisitorWrapper besøkende) Lignende metode:
| tomrom tomrom | Hvis vi ønsker å besøke typehierarkiet for en bestemt type med den angitte besøkende, bruker vi denne metoden. |
| addHandler(DeserializationProblemHandler h) | ObjectMapper | For å håndtere spesifiserte problemer under deserialisering bruker vi en spesifisert DeserializationProblemHandler, og for å legge til behandleren bruker vi denne metoden. |
| addMixIn(Klassemål, KlasseblandingKilde) | ObjectMapper | For å bruke innblandingsannotering for spesifisert utvidelsesklasse eller grensesnitt, bruker vi denne metoden for å legge den til. |
| canDeserialize (JavaType-type) | boolsk | Den brukes til å sjekke om kartleggeren kan de-serialisere et objekt av en spesifisert type eller ikke. |
| canDeserialize (JavaType-type, AtomicReference-årsak) | boolsk | Det ligner på den forrige metoden. Den eneste forskjellen er at den kan returnere den kastebare som ble kastet på tidspunktet for konstruksjonen av serializeren. Den kastbare kan brukes til å finne ut av det faktiske problemet. |
| canSerialize (klassetype) | boolsk | Den brukes til å sjekke om kartleggeren kan serialisere et objekt av en spesifisert type eller ikke. |
| canSerialize (Klassetype, AtomicReference-årsak) | boolsk | Det ligner på den forrige metoden. Den eneste forskjellen er at den kan returnere den kastebare som ble kastet på tidspunktet for konstruksjonen av serializeren. Den kastbare kan brukes til å finne ut av det faktiske problemet. |
| clearProblemHandlers() | ObjectMapper | Det er en av metodene som brukes til å fjerne alle DeserializationProblemHandlers-forekomster fra kartleggeren som er registrert. |
| konfigurer (DeserializationFeature f, boolsk tilstand) lignende metoder:
| ObjectMapper | Den brukes til å endre tilstanden til en på/av de-serialisering, Json Generator, JsonParser, Mapper eller Serialization-funksjon for objektmapper, generatorforekomster, parserforekomster, mapperforekomst eller objektkartlegging. |
| constructType(Type t) | JavaType | Hvis vi ønsker å konstruere JavaType ut av en gitt type uten eksplisitt kontekst, bruker vi denne metoden. |
| convertValue(Object fromValue, Class toValueType) Lignende metoder:
| T | Hvis vi ønsker å utføre en to-trinns konvertering av en gitt verdi til en forekomst av en gitt verditype, bruker vi converValue() metoden. |
| createArrayNode() | ArrayNode | Den brukes til å lage ArrayNode. |
| defaultClassIntrospector() | KlasseIntrospektør | Hvis vi vil bruke standard ClassIntrospector, bruker vi denne Overridable-hjelpemetoden for å konstruere den. |
| deaktiver (DeserializationFeature-funksjon) Lignende metoder:
| ObjectMapper | Den brukes til å deaktivere gitte DeserializationConfig, JsonGenerator.Features for parser-forekomster, JsonParser.Features for parser-forekomster av objektmapperen. |
| disableDefaultTyping() | ObjectMapper | Mange ganger må vi deaktivere automatisk inkludering av typeinformasjon, og for dette formålet bruker vi denne metoden. |
aktiver (DeserializationFeature-funksjon)
| ObjectMapper | Den brukes til å aktivere den gitte DeserializationConfig, JsonGenerator.Features for parserforekomster, JsonParser.Features for parserforekomster av objektmapperen. |
| enableDefaultTyping() Lignende metoder:
| ObjectMapper | For å bruke automatisk inkludering av typeinformasjon for de-serialisering av polymorfe typer., bruker vi denne metoden for å aktivere den. |
| findAndRegisterModules() | ObjectMapper | Den ligner på mapper.registerModules(mapper.findModules())-metoden. |
| findModules() Lignende metoder:
| Liste | Den brukes til å finne tilgjengelige metoder. Metoden bruker JDK ServiceLoader-fasiliteten med modullevert SPI. |
| getDateFormat() | DatoFormat | Den brukes til å få formatet på datoen. |
| getDeserializationConfig() | DeserializationConfig | Den brukes til å hente det delte standard DeserializationConfig-objektet. Det returnerte objektet definerer konfigurasjonsinnstillingene for de-serialisering. |
| getDeserializationContext() | DeserializationContext | Den brukes til å få gjeldende DeserializationContext. |
| getFactory() | JsonFactory | Hvis kartleggeren trenger å konstruere en Json-parser og generatorer, trenger den json factory, og for å få det bruker vi getFactory()-metoden. |
| getInjectableValues() | Injiserbare verdier | Det brukes til å få injiserbare verdier. |
| getJsonFactory() | JsonFactory | Det er en utdatert metode for å få Json-fabrikken. |
| getNodeFactory() | JsonNodeFactory | Den brukes til å hente JsonNodeFactory som brukes av kartleggeren på tidspunktet for direkte konstruksjon av root JsonNode-forekomster for trær. |
| getPropertyNamingStrategy() | Eiendomsnavnstrategi | Som navnet tilsier, er det vant til navnestrategien til eiendommen. |
| getSerializationConfig() | SerializationConfig | Den brukes til å hente det delte standard SerializationConfig-objektet. Det returnerte objektet definerer konfigurasjonsinnstillingene for serialisering. |
| getSerializerFactory() | SerializerFactory | Den brukes til å få den gjeldende SerializerFactory. |
| getSerializerProvider() | SerializerProvider | Det er en accessor for fabrikken, som brukes til å lage forekomster ved å kalle DefaultSerializerProvider.createInstance(SerializationConfig, SerializerFactory). |
| getSerializerProviderInstance() | SerializerProvider | Det er en accessor som brukes til å konstruere og returnere en forekomst av SerializerProvider, som vi kan bruke for å få tilgang til serializers. |
| getSubtypeResolver() | SubtypeResolver | Den brukes for å få tilgang til subtype-løseren som er i bruk. |
| getTypeFactory() | TypeFactory | Det er en accessor som brukes til å få en forekomst av den for øyeblikket konfigurerte TypeFactory. |
| getVisibilityChecker() | VisibilityChecker | Den brukes til å få tilgang til den gjeldende konfigurerte synlighetskontrollen. |
| isEnabled(DeserializationFeature f) Lignende metoder:
| boolsk | Metoden isEnable() og dens variasjoner brukes til å sjekke om gitte deserialiseringsspesifikke, JsonFactory, JsonGenerator, JsonParser, Mapper eller Serialization-funksjonen er aktivert eller ikke. |
| mixInCount() | int | Den brukes til å få tellingen av mixIn. |
| leser() Lignende metoder:
| Objektleser | Reader()-metoden og dens variasjoner er fabrikkmetodene som brukes til å konstruere en forekomst av ObjectReader. Basert på kravet kan vi sende Base64-kodingsvarianten for Base64-kodede binære data, standardattributter, funksjoner aktivert, injiserbare verdier, JsonNodeFactory for å konstruere JSON-trær. |
| leserFor(Klassetype) | Objektleser | Det er en fabrikkmetode som brukes til å konstruere ObjectReader, som tillater lese- eller oppdateringsoperasjoner for forekomster av den angitte typen. |
| readerFor (JavaType-type) | Objektleser | Det er en fabrikkmetode som brukes til å konstruere ObjectReader, som tillater lese- eller oppdateringsoperasjoner for forekomster av spesifisert JavaType. |
| readerFor(TypeReference type) | Objektleser | Det er en fabrikkmetode som brukes til å konstruere ObjectReader, som tillater lese- eller oppdateringsoperasjoner for forekomster av gitt TypeReference. |
| readerForUpdating(Object valueToUpdate) | Objektleser | Det er en fabrikkmetode som brukes til å konstruere ObjectReader som tillater oppdateringsoperasjoner for det gitte objektet. |
| readerWithView(Klassevisning) | Objektleser | Det er en fabrikkmetode som brukes til å konstruere ObjectReader, noe som tillater de-serialisering av objekter med gitt JSON View. |
readTree(byte[] innhold)
| JsonNode ELLER T | ReadTree() og dens variasjoner brukes til å de-serialisere JSON-innholdet som et tre uttrykt ved hjelp av et sett med JsonNode-forekomster. |
| readValue(byte[] src, Class valueType) Lignende metoder
| T ELLER MappingIterator | ReadValue() og dens varianter brukes til å de-serialisere JSON-innhold
|
| readValues(JsonParser p, Class valueType) Lignende metoder:
| MappingIterator | ReadValues() og dens variasjoner brukes til å lese sekvensen av objekter fra parserstrømmen. |
| registerModule(modulmodul) Lignende metoder:
| ObjectMapper | RegisterModule() og dens variasjoner brukes til å registrere en modul som har evnen til å utvide funksjonaliteten gitt av kartleggeren. |
| registerSubtypes(NamedType... typer) | tomrom | Den brukes til å registrere den gitte klassen som en undertype. Ved å gjøre det kan den typenavnbaserte oppløsningen koble supertyper til undertyper. |
| setAnnotationIntrospector(AnnotationIntrospector ai) | ObjectMapper | Den brukes til å angi AnnotationIntrospector, som brukes av mapper-forekomsten for både serialisering og de-serialisering. |
| setAnnotationIntrospectors(AnnotationIntrospector serializerAI, AnnotationIntrospector deserializerAI) | ObjectMapper | Den brukes til å endre forekomsten av AnnotationIntrospector som brukes av gjeldende kartleggerforekomst for serialisering og de-serialisering. |
| setBase64Variant(Base64Variant v) | ObjectMapper | Den brukes til å konfigurere standard Base64Variant som vil brukes av byte[] serializers og de-serializers. |
| setConfig(DeserializationConfig config) | ObjectMapper | For å utføre overstyringen av det underliggende DeserializationConfig-objektet, bruker vi denne metoden. |
| setConfig(SerializationConfig config) | ObjectMapper | For å utføre overstyringen av det underliggende SerializationConfig-objektet som har serialiseringsspesifikke konfigurasjonsinnstillinger, bruker vi denne metoden. |
| setDateFormat(DatoFormat datoFormat) | ObjectMapper | Det brukes til å konfigurere standard DateFormat til å bruke det på tidspunktet for serialisering av tidsverdier som Strings eller de-serialisering fra JSON Strings. |
| setDefaultPrettyPrinter(PrettyPrinter pp) | ObjectMapper | Den brukes til å spesifisere PrettyPrinter for bruk når 'default pretty-printing' er aktivert. |
| setDefaultTyping(TypeResolverBuilder-typer) | ObjectMapper | Den brukes til å aktivere automatisk inkludering av typeinformasjon. |
| setHandlerInstantiator(HandlerInstantiator hei) | Gjenstand | Den brukes til å konfigurere HandlerInstantiator for å lage forekomster av behandlere. |
| setFilterProvider(FilterProvider filterProvider) | ObjectMapper | Den brukes til å konfigurere gjeldende kartlegger til å bruke spesifisert FilterProvider for å tilordne filter-ID-er til faktiske filterforekomster. |
| setInjectableValues(InjectableValues injectableValues) | ObjectMapper | Den brukes til å konfigurere InjectableValues som brukes til å finne verdier som skal injiseres. |
| setLocale(Local l) | ObjectMapper | Den brukes til å overstyre standardlokaliteten som skal brukes for formatering. |
| setMixInResolver(ClassIntrospector.MixInResolver-oppløsning) | ObjectMapper | Vi bruker denne metoden for å spesifisere den gitte resolveren for å finne innblandingsklasser som skal brukes, og overstyre direkte lagt til tilordninger. |
| setMixInAnnotations(Kart | tomrom | Det er en avskrevet metode for å definere innblandingskommentarer. |
| setNodeFactory(JsonNodeFactory f) | ObjectMapper | Den brukes til å spesifisere JsonNodeFactory som skal brukes til å konstruere trenoder på rotnivå. |
| setMixIns(Kart | ObjectMapper | Den brukes til å definere innblandingsannoteringer som skal brukes for å utvide merknader som bearbeidbare klasser har. |
| setPropertyInclusion(JsonInclude.Value incl) | ObjectMapper | Den brukes til å angi standard POJO-egenskapsinkluderingsstrategi for serialisering. |
| setPropertyNameStrategy(PropertyNameStrategy s) | ObjectMapper | Den brukes til å angi navnestrategien for egendefinerte egenskaper som skal brukes. |
| setSerializerFactory(SerializerFactory f) | ObjectMapper | Den brukes til å angi den spesifikke SerializerFactory som skal brukes for å konstruere (bean) serializers. |
| setSerializerProvider(DefaultSerializerProvider p) | ObjectMapper | Den brukes til å angi 'blåkopi' SerializerProvider-forekomsten for å bruke den som base til faktiske leverandørforekomster som skal brukes til å håndtere hurtigbufring av JsonSerializer-forekomster. |
| setSubtypeResolver(SubtypeResolver str) | ObjectMapper | Den brukes til å angi den egendefinerte subtype-løseren som skal brukes. |
| setTimeZone(TimeZone tz) | ObjectMapper | Den brukes til å overstyre standard tidssone som skal brukes til formatering. |
| setTypeFactory(TypeFactory f) | ObjectMapper | Den brukes til å overstyre TypeFactory-forekomsten, som brukes av gjeldende kartlegger. |
setVisibility(PropertyAccessor forMethod, JsonAutoDetect.Visibility synlighet)
| ObjectMapper | SetVisibility() og dens variant brukes til å angi den gjeldende konfigurerte VisibilityChecker. Den returnerte ObjectMapper-forekomsten brukes til å sjekke om det gitte egenskapselementet kan oppdages automatisk eller ikke. |
| treeAsTokens(TreeNode n) | JsonParser | Den brukes til å konstruere en JsonParser ut av JSON-trerepresentasjon. |
| treeToValue(TreNode n, Class valueType) | T | Den brukes til å binde dataene gitt JSON-treet inneholder til en bestemt verditype. |
| versjon() | Versjon | Den brukes til å få versjonsinformasjonen lagret i og lest fra krukken som inneholder denne klassen. |
forfatter()
| ObjectWriter | Write() og dens variasjoner brukes til å konstruere ObjectWriter med standardinnstillinger, gitt Base64-kodingsvariant for Base64-kodede binære data, tegn-escape-detaljer for utdata, standardattributter, DateFormat, filterleverandør, skjemaobjekt til JsonGenerator brukt til å skrive innhold, pen skriver for innrykk, eller funksjon aktivert. |
| writerFor(Class rootType) - | ObjectWriter | Den brukes til å konstruere ObjectWriter for å serialisere objektene ved å bruke en spesifisert rottype i stedet for den faktiske kjøretidstypen. |
| writerFor(JavaType rootType) | ObjectWriter | Den brukes til å konstruere ObjectWriter for å serialisere objektene ved å bruke en spesifisert rottype i stedet for den faktiske kjøretidstypen. |
| writerFor(TypeReference rootType) | ObjectWriter | Den brukes til å konstruere ObjectWriter for å serialisere objektene ved å bruke en spesifisert rottype i stedet for den faktiske kjøretidstypen. |
| writerWithDefaultPrettyPrinter() | ObjectWriter | Det er en fabrikkmetode som brukes til å konstruere ObjectWriter for å serialisere objektene ved å bruke den ganske standardskriveren for innrykk. |
writerWithType(Class rootType)
| ObjectWriter | Disse metodene avskrives, og i stedet for dem bruker vi writerFor(TypeReference)-metoden. |
| writerWithView(Class serializationView) | ObjectWriter | Det er en fabrikkmetode som brukes til å konstruere ObjectWriter for serialisering av objekter ved bruk av spesifisert JSON View. |
| writeTree(JsonGenerator jgen, JsonNode rootNode) | tomrom | Den brukes til å serialisere det medfølgende JSON-treet ved å bruke den gitte JsonGenerator. |
| skriveverdi(filresultatfil, objektverdi) | tomrom | Den brukes til å serialisere Java-verdi som JSON-utgang og skrive den til den gitte fil. |
| writeValue(JsonGenerator g, Objektverdi). | tomrom | Den brukes til å serialisere Java-verdier som JSON-utdata ved å bruke den gitte JsonGenerator. |
| writeValue(OutputStream out, Object value) | tomrom | Den brukes til å serialisere Java-verdi som JSON-utgang ved å bruke den gitte OutputStream. |
| skriveverdi(Writer w, Object value) | tomrom | Den brukes til å serialisere Java-verdier som JSON-utdata ved å bruke den gitte Forfatter. |
| writeValueAsBytes(Objektverdi) | byte[] | Den brukes til å serialisere Java-verdier som en byte-array. |
| writeValueAsString(Objektverdi) | String | Den brukes til å serialisere Java-verdier som en streng. |
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+ ' ]'; } } Produksjon: