Jackson, Java ve Spring Boot'ta serileştirme ve seri durumdan çıkarma ile çalışmak için en yaygın kitaplıklardan biridir ve öncelikle POJO'lar ve JSON arasında ayrıştırma ve dönüştürme için kullanılır.
Yine de, Jackson ile çalıştıysanız, varsayılan olarak belirgin bir güzel baskı eksikliği fark edeceksiniz:
{Task 1=In_Progress, Task 2=Done, Task 3=Planned}
Bu kısa öğreticide, JSON'u Jackson ile standart Java'da ve Spring Boot ile güzel bir şekilde nasıl yazdıracağınızı öğreneceksiniz.
Bir JSON dizisi ve JSON dizisine dönüştürülmüş bir POJO ile çalışacağız, çünkü bunlar farklı davranır:
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;
}
Bir somutlaştıralım Book
örnek ve giriş için bir dize:
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);
Jackson Once ile Pretty-Print JSON
Genel yazdırma bayrağını ayarlamak yerine, tek bir çağrıda bir kez güzel yazdırmak isterseniz, writerWithDefaultPrettyPrinter()
dizge olarak bir değer yazmadan önce arayın:
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);
Giriş dizesi (JSON-to-Object) öğesinden okundu ve bu nesnenin değeri, güzel yazdırma (Object-to-JSON) kullanılarak bir dizeye geri yazıldı:
{Task 1=In_Progress, Task 2=Done, Task 3=Planned}
{
"Task 1" : "In_Progress",
"Task 2" : "Done",
"Task 3" : "Planned"
}
Alternatif olarak, kullanırken readTree()
, sonuç JsonNode
Sahiptir-A toPrettyString()
dizeleri güzel yazdırılmış JSON'a dönüştürmenin harika ve basit bir yolu olarak hizmet eden işlev:
ObjectMapper mapper = new ObjectMapper();
Object jsonString = mapper.readTree(inputString).toPrettyString();
System.out.println(jsonString);
Bu, bir giriş JSON dizesini biçimlendirmenin hızlı ve basit bir yoludur! POJO'larla çalışırken, belirli bir girdiden okumak yerine yalnızca Nesneden JSON'a dönüştürme gerçekleştireceğiz ve güzel yazdırmayı etkinleştireceğiz:
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 Güzel Baskı Ayarı
Alternatif olarak, eğer projeniz için Jackson'ın tercih edilen global davranışı buysa, global güzel baskıyı etkinleştirebilirsiniz. Bu, kullanmak kadar kolay enable()
yöntem ObjectMapper()
örneğini başlattığınızda:
ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
Bir nesneyi JSON dizesi olarak yazar yazmaz, güzel yazdırma varsayılan olarak etkinleştirilir:
Object jsonString = mapper.readValue(inputString, Object.class);
String indentedString = mapper.writeValueAsString(jsonString);
System.out.println(jsonString);
System.out.println(indentedString);
Bunun sonucu:
{Task 1=In_Progress, Task 2=Done, Task 3=Planned}
{
"Task 1" : "In_Progress",
"Task 2" : "Done",
"Task 3" : "Planned"
}
POJO'lar ile:
String jsonBook = mapper.writeValueAsString(book);
System.out.println(jsonBook);
En iyi uygulamalar, endüstri tarafından kabul edilen standartlar ve dahil edilen hile sayfası ile Git'i öğrenmek için uygulamalı, pratik kılavuzumuza göz atın. Googling Git komutlarını durdurun ve aslında öğrenmek o!
{
"title" : "Our Mathematical Universe",
"author" : "Max Tegmark",
"releaseYear" : 2014
}
Güzel yazdırma yaygın bir görüntüleme formatıysa, bu yaklaşım önemli ölçüde daha az ayrıntılıdır.
Spring Boot ile Pretty-Printing Jackson
El kitabı olmadan Spring Boot kullanıyorsanız ObjectMapper
örnek oluşturulur ve temeldeki seri hale getiriciye güvenirseniz, indent_output
bayrak true
içinde application.properties
Dosya:
spring.jackson.serialization.indent_output=true
Veya, içinde application.yaml
:
spring:
jackson:
serialization:
INDENT_OUTPUT: true
Bu ayarlar SerializationFeature.INDENT_OUTPUT
baharda bayrak ObjectMapper
örneği.
Sonuç
Bu kısa öğreticide, Jackson kullanarak bir String veya POJO'dan JSON'u nasıl güzel bir şekilde yazdırabileceğinize bir göz attık. Tek baskı değişikliklerini (yalnızca bir kez güzel baskı yapmak istediğinizde) araştırdık ve için küresel Jackson bayrağını belirledik. ObjectMapper
. Son olarak, Jackson ile güzel yazdırmayı etkinleştirmek için Spring Boot özelliklerini değiştirmeye göz attık.