Site Overlay

Intro til Jackson ObjectMapper (Norsk)

Oversikt

Denne opplæringen fokuserer på forståelse Jackson ObjectMapper klasse og hvordan å serialisere Java-objekter i JSON og deserialisere JSON-strengen i Java-objekter.

for Å forstå mer om Jackson bibliotek generelt, Jackson Opplæringen er et godt sted å begynne.,

Videre lesing:

Arv med Jackson

Denne opplæringen vil vise hvordan å håndtere inkludering av undertype metadata og ignorerer egenskaper arvet fra superclasses med Jackson.
Les mer →

Jackson JSON Utsikt

Hvordan å bruke @JsonView merknad i Jackson til en perfekt kontroll serialisering av objekter (uten og med Våren).
Les mer →

Jackson – Tilpasset Serializer

Styre din JSON-utgang med Jackson 2 ved hjelp av en Egendefinert Serializer.,
Les mer →

Avhengigheter

La oss først legge til følgende avhengigheter til pom.xml:

Denne avhengigheten vil også transitively legge til følgende biblioteker til classpath:

  1. jackson-kommentarer
  2. jackson-core

Alltid bruke den nyeste versjonen fra Maven sentralt oppbevaringssted for jackson-databind.

Lesing og Skriving ved Hjelp av ObjectMapper

La oss starte med det grunnleggende lese-og skriveoperasjoner.,

Den enkle readValue API av ObjectMapper er et godt startpunkt. Vi kan bruke den til å analysere eller deserialisere JSON innholdet i et Java-objekt.

Også på å skrive side, kan vi bruke writeValue API for å serialisere noen Java-objekt som JSON-utgang.

Vi vil bruke følgende Bil klasse med to felt som objekt for å serialisere eller deserialisere gjennom denne artikkelen:

public class Car { private String color; private String type; // standard getters setters}

3.1., Java-Objekt til JSON

La oss se et første eksempel på serializing et Java-objekt i JSON bruke writeValue metoden for ObjectMapper klasse:

utgangen av den ovennevnte fil, vil være:

{"color":"yellow","type":"renault"}

metodene writeValueAsString og writeValueAsBytes av ObjectMapper klasse generere en JSON fra et Java-objekt og returnere den genererte JSON som en streng eller som en byte array:

String carAsString = objectMapper.writeValueAsString(car);

3.2., JSON til Java-Objekt.

Nedenfor er et enkelt eksempel for å konvertere en JSON-String til et Java-objekt ved hjelp av ObjectMapper klasse:

String json = "{ \"color\" : \"Black\", \"type\" : \"BMW\" }";Car car = objectMapper.readValue(json, Car.class);

readValue () – funksjonen aksepterer også andre former for input, for eksempel en fil som inneholder JSON streng:

Car car = objectMapper.readValue(new File("src/test/resources/json_car.json"), Car.class);

eller en URL-adresse:

Car car = objectMapper.readValue(new URL("file:src/test/resources/json_car.json"), Car.class);

3.3. JSON til Jackson JsonNode

Alternativt, en JSON kan være lest inn i en JsonNode objekt og som brukes til å hente data fra en bestemt node:

3.4., Å lage et Java-Liste Fra en JSON Utvalg String

Vi kan analysere en JSON i form av en matrise i et Java-objekt ved hjelp av en liste TypeReference:

3.5. Å lage Java-Kart Fra JSON String

på samme måte, vi kan analysere en JSON inn i en Java Kart:

Avanserte Funksjoner

En av de største styrkene til Jackson-biblioteket er den svært egendefinerbare serialisering og deserialisering prosessen.,

I denne seksjonen vil vi gå gjennom noen avanserte funksjoner der input eller output JSON svar kan være forskjellig fra objekt som genererer eller bruker respons.

4.1., Konfigurere Bedriften eller Deserialisering Funksjonen

Mens konvertere JSON-objekter for å Java-klasser, i tilfelle JSON strengen har noen nye felter, standard prosessen vil resultere i et unntak:

String jsonString = "{ \"color\" : \"Black\", \"type\" : \"Fiat\", \"year\" : \"1970\" }";

JSON streng i eksemplet ovenfor i standard analyse av prosessen til Java-objekt for Klassen Bil vil resultere i UnrecognizedPropertyException unntak.,

Gjennom konfigurere metode, kan vi utvide standard prosess for å ignorere de nye feltene:

Men en annen mulighet er basert på FAIL_ON_NULL_FOR_PRIMITIVES, som definerer om null-verdier for primitive verdier er tillatt:

objectMapper.configure(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES, false);

på samme måte, FAIL_ON_NUMBERS_FOR_ENUM kontroller om usb-verdier er lov til å være serialisert/deserialized som tall:

objectMapper.configure(DeserializationFeature.FAIL_ON_NUMBERS_FOR_ENUMS, false);

Du finner en omfattende liste over serialisering og deserialisering har på det offisielle nettstedet.

4.2., Opprette Egendefinerte Serializer eller Deserializer

en Annen viktig funksjon i ObjectMapper klasse er muligheten til å registrere deg for en tilpasset serializer og deserializer.

Tilpasset serializers og deserializers er svært nyttig i situasjoner der input eller output JSON svar er forskjellige i struktur enn Java-klasse som det må være serialisert eller deserialized.,

Nedenfor er et eksempel på en tilpasset JSON serializer:

Denne skikken serializer kan påberopes som dette:

Her er hva Bilen ser ut som (som JSON-utgang) på klientsiden:

var carJson = {"car_brand":"renault"}

Og her er et eksempel på en tilpasset JSON deserializer:

Denne skikken deserializer kan bli brukt på denne måten:

4.3. Håndtering Dato Formater

standard serialisering av java.util.Dato produserer et nummer, jeg.,e., epoke tidsstempel (antall millisekunder siden 1. januar 1970, UTC). Men dette er ikke veldig lesbar og krever ytterligere konvertering til å bli vist i en menneskelig lesbart format.

La oss bryte Bilen eksempel har vi brukt så langt inne på Forespørsel klasse med datePurchased eiendom:

public class Request { private Car car; private Date datePurchased; // standard getters setters}

for Å kontrollere String format for dato og sett den til, for eksempel, yyyy-MM-dd TT:mm a z, bør du vurdere følgende utdrag:

for Å lære mer om serializing datoer med Jackson, les mer i dybden skrive opp.

4.4., Håndtering Samlinger

en Annen liten, men nyttig funksjon som er tilgjengelig gjennom DeserializationFeature klasse er evnen til å generere den type samlinger som vi ønsker fra en JSON Utvalg respons.

For eksempel, kan vi generere resultatet som et array:

Eller som en Liste:

Mer informasjon om håndtering av samlinger med Jackson er tilgjengelig her.

Konklusjon

Jackson er en solid og modne JSON bedriften/deserialisering bibliotek for Java., Den ObjectMapper API gir deg en enkel måte å analysere og generere JSON respons objekter med stor fleksibilitet. Denne artikkelen diskutert de viktigste funksjonene som gjør biblioteket så populære.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *