Jackson er et av de vanligste bibliotekene for å jobbe med serialisering og deserialisering i Java og Spring Boot, primært brukt til å analysere og konvertere mellom POJOs og JSON.
Skjønt, hvis du har jobbet med Jackson, vil du legge merke til en tydelig mangel på pen utskrift som standard:
{Task 1=In_Progress, Task 2=Done, Task 3=Planned}
I denne korte opplæringen lærer du hvordan du pent skriver ut JSON med Jackson i standard Java og med Spring Boot.
Vi skal jobbe med en JSON-streng og en POJO konvertert til en JSON-streng, siden disse oppfører seg annerledes:
public class Book {
private String title;
private String author;
private int releaseYear;
public Book(String title, String author, int releaseYear) {
this.title = title;
this.author = author;
this.releaseYear = releaseYear;
}
La oss instansiere en Book
forekomst, og en streng for inngangen:
String inputString = "{n" +
""Task 1" : "In_Progress",n" +
""Task 2" : "Done",n" +
""Task 3" : "Planned"n" +
"}";
Book book = new Book("Our Mathematical Universe", "Max Tegmark", 2014);
Pretty-Print JSON med Jackson Once
Hvis du ønsker å ganske enkelt skrive ut én gang, i en enkelt samtale, i stedet for å sette det globale utskriftsflagget – kan du ganske enkelt bruke writerWithDefaultPrettyPrinter()
ring før du skriver en verdi som en streng:
ObjectMapper mapper = new ObjectMapper();
Object jsonString = mapper.readValue(inputString, Object.class);
String indentedString = mapper.writerWithDefaultPrettyPrinter()
.writeValueAsString(jsonString);
System.out.println(jsonString);
System.out.println(indentedString);
Inndatastrengen ble lest fra (JSON-to-Object), og verdien til dette objektet ble skrevet tilbake til en streng, ved hjelp av pretty-printing (Object-to-JSON):
{Task 1=In_Progress, Task 2=Done, Task 3=Planned}
{
"Task 1" : "In_Progress",
"Task 2" : "Done",
"Task 3" : "Planned"
}
Alternativt ved bruk readTree()
, Resultatet JsonNode
har en toPrettyString()
funksjon som fungerer som en flott enkel måte å konvertere strenger til pen-trykt JSON:
ObjectMapper mapper = new ObjectMapper();
Object jsonString = mapper.readTree(inputString).toPrettyString();
System.out.println(jsonString);
Dette er en rask og enkel måte å formatere en JSON-streng! Når du arbeider med POJO-er, i stedet for å lese fra en gitt inngang, vil vi kun utføre objekt-til-JSON-konvertering og aktivere pen utskrift:
ObjectMapper mapper = new ObjectMapper();
String jsonBook = mapper.writeValueAsString(book);
String indentedBook = mapper.writerWithDefaultPrettyPrinter()
.writeValueAsString(book);
System.out.println(jsonBook);
System.out.println(indentedBook);
{"title":"Our Mathematical Universe","author":"Max Tegmark","releaseYear":2014}
{
"title" : "Our Mathematical Universe",
"author" : "Max Tegmark",
"releaseYear" : 2014
}
Global Pretty-Print-innstilling
Alternativt kan du aktivere global pen utskrift, hvis det er den globale oppførselen til Jackson å foretrekke for prosjektet ditt. Dette er like enkelt som å bruke enable()
metode av ObjectMapper()
eksempel når du instansierer det:
ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
Så snart du skriver et objekt som en JSON-streng – vil pretty-printing være aktivert som standard:
Object jsonString = mapper.readValue(inputString, Object.class);
String indentedString = mapper.writeValueAsString(jsonString);
System.out.println(jsonString);
System.out.println(indentedString);
Dette resulterer i:
{Task 1=In_Progress, Task 2=Done, Task 3=Planned}
{
"Task 1" : "In_Progress",
"Task 2" : "Done",
"Task 3" : "Planned"
}
Med POJOs:
String jsonBook = mapper.writeValueAsString(book);
System.out.println(jsonBook);
Sjekk ut vår praktiske, praktiske guide for å lære Git, med beste praksis, bransjeaksepterte standarder og inkludert jukseark. Slutt å google Git-kommandoer og faktisk lære den!
{
"title" : "Our Mathematical Universe",
"author" : "Max Tegmark",
"releaseYear" : 2014
}
Denne tilnærmingen er betydelig mindre detaljert hvis pen utskrift er et vanlig visningsformat.
Pretty-Printing Jackson med Spring Boot
Hvis du bruker Spring Boot, uten bruksanvisning ObjectMapper
forekomst som opprettes og stole på den underliggende serializeren, kan du angi indent_output
flagg til true
i application.properties
file:
spring.jackson.serialization.indent_output=true
Eller i application.yaml
:
spring:
jackson:
serialization:
INDENT_OUTPUT: true
Dette setter SerializationFeature.INDENT_OUTPUT
flagg på våren ObjectMapper
forekomst.
konklusjonen
I denne korte opplæringen har vi tatt en titt på hvordan du kan skrive ut JSON fra en streng eller POJO ved å bruke Jackson. Vi har utforsket endringer i enkelttrykk (når du bare ønsker å pen-trykke én gang) og satt det globale Jackson-flagget for ObjectMapper
. Til slutt tok vi en titt på endring av Spring Boot-egenskaper for å muliggjøre pen utskrift med Jackson.