جاوا اور اسپرنگ بوٹ میں جیکسن کے ساتھ JSON کو خوبصورت پرنٹ کرنا

جیکسن جاوا اور اسپرنگ بوٹ میں سیریلائزیشن اور ڈی سیریلائزیشن کے ساتھ کام کرنے کے لیے سب سے عام لائبریریوں میں سے ایک ہے، جو بنیادی طور پر POJOs اور JSON کے درمیان تجزیہ کرنے اور تبدیل کرنے کے لیے استعمال ہوتی ہے۔

اگرچہ، اگر آپ نے جیکسن کے ساتھ کام کیا ہے، تو آپ کو ڈیفالٹ کے لحاظ سے خوبصورت پرنٹنگ کی ایک واضح کمی نظر آئے گی:

{Task 1=In_Progress, Task 2=Done, Task 3=Planned}

اس مختصر ٹیوٹوریل میں، آپ یہ سیکھیں گے کہ JSON کو جیکسن کے ساتھ معیاری جاوا میں اور اسپرنگ بوٹ کے ساتھ کیسے پرنٹ کیا جائے۔

ہم JSON سٹرنگ کے ساتھ کام کریں گے، اور POJO کو JSON سٹرنگ میں تبدیل کر دیا جائے گا، کیونکہ یہ مختلف طریقے سے برتاؤ کرتے ہیں:

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;
    }
    

آئیے فوری طور پر a Book مثال کے طور پر، اور ان پٹ کے لیے ایک تار:

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);

ایک بار جیکسن کے ساتھ JSON کو خوبصورت پرنٹ کریں۔

اگر آپ عالمی پرنٹنگ پرچم کو ترتیب دینے کے بجائے، ایک ہی کال میں، صرف ایک بار خوبصورت پرنٹ کرنا چاہتے ہیں - تو آپ آسانی سے استعمال کر سکتے ہیں۔ writerWithDefaultPrettyPrinter() ایک سٹرنگ کے طور پر ایک قدر لکھنے سے پہلے کال کریں:

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);

ان پٹ سٹرنگ کو (JSON-to-Object) سے پڑھا گیا تھا، اور اس آبجیکٹ کی قدر کو خوبصورت پرنٹنگ (Object-to-JSON) کا استعمال کرتے ہوئے واپس اسٹرنگ میں لکھا گیا تھا:

{Task 1=In_Progress, Task 2=Done, Task 3=Planned}

{
  "Task 1" : "In_Progress",
  "Task 2" : "Done",
  "Task 3" : "Planned"
}

متبادل طور پر، استعمال کرتے وقت readTree()، نتیجہ JsonNode ہے ایک toPrettyString() فنکشن جو سٹرنگز کو خوبصورت پرنٹ شدہ JSON میں تبدیل کرنے کے ایک بہترین آسان طریقہ کے طور پر کام کرتا ہے:

ObjectMapper mapper = new ObjectMapper();
Object jsonString = mapper.readTree(inputString).toPrettyString();
System.out.println(jsonString);

یہ ایک ان پٹ JSON سٹرنگ کو فارمیٹ کرنے کا ایک تیز اور آسان طریقہ ہے! POJOs کے ساتھ کام کرتے وقت، دیئے گئے ان پٹ سے پڑھنے کے بجائے، ہم صرف آبجیکٹ سے JSON کنورژن کریں گے اور خوبصورت پرنٹنگ کو فعال کریں گے:

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
}

گلوبل پریٹی پرنٹ سیٹنگ

متبادل طور پر، آپ گلوبل پریٹی پرنٹنگ کو فعال کر سکتے ہیں، اگر یہ آپ کے پروجیکٹ کے لیے جیکسن کا عالمی طرز عمل ہے۔ یہ اتنا ہی آسان ہے جتنا کہ استعمال کرنا enable() کا طریقہ ObjectMapper() مثال کے طور پر جب آپ اسے انسٹینٹیٹ کر رہے ہیں:

ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);

جیسے ہی آپ کسی چیز کو JSON سٹرنگ کے طور پر لکھتے ہیں - خوبصورت پرنٹنگ بطور ڈیفالٹ فعال ہو جائے گی:

Object jsonString = mapper.readValue(inputString, Object.class);
String indentedString = mapper.writeValueAsString(jsonString);

System.out.println(jsonString);
System.out.println(indentedString);

اس کے نتائج:

{Task 1=In_Progress, Task 2=Done, Task 3=Planned}
{
  "Task 1" : "In_Progress",
  "Task 2" : "Done",
  "Task 3" : "Planned"
}

POJOs کے ساتھ:

String jsonBook = mapper.writeValueAsString(book);
System.out.println(jsonBook);

بہترین طرز عمل، صنعت کے لیے منظور شدہ معیارات، اور چیٹ شیٹ کے ساتھ Git سیکھنے کے لیے ہمارے ہینڈ آن، عملی گائیڈ کو دیکھیں۔ گوگلنگ گٹ کمانڈز کو روکیں اور اصل میں سیکھ یہ!

{
  "title" : "Our Mathematical Universe",
  "author" : "Max Tegmark",
  "releaseYear" : 2014
}

اگر خوبصورت پرنٹنگ ایک عام ڈسپلے فارمیٹ ہے تو یہ نقطہ نظر نمایاں طور پر کم لفظی ہے۔

اسپرنگ بوٹ کے ساتھ خوبصورت پرنٹنگ جیکسن

اگر آپ اسپرنگ بوٹ استعمال کر رہے ہیں، بغیر دستی کے ObjectMapper مثال کے طور پر بنایا جا رہا ہے اور بنیادی سیریلائزر پر انحصار کرتے ہیں، آپ سیٹ کر سکتے ہیں۔ indent_output پرچم کو true میں application.properties فائل:

spring.jackson.serialization.indent_output=true

یا، اندر application.yaml:

spring:
  jackson:
    serialization:
      INDENT_OUTPUT: true

یہ سیٹ کرتا ہے۔ SerializationFeature.INDENT_OUTPUT موسم بہار میں پرچم ObjectMapper مثال.

نتیجہ

اس مختصر ٹیوٹوریل میں، ہم نے اس پر ایک نظر ڈالی ہے کہ آپ جیکسن کا استعمال کرتے ہوئے اسٹرنگ یا POJO سے JSON کو کس طرح خوبصورت پرنٹ کرسکتے ہیں۔ ہم نے سنگل پرنٹ کی تبدیلیوں کو تلاش کیا ہے (جب آپ صرف ایک بار خوبصورت پرنٹ کرنا چاہتے ہیں) اور عالمی جیکسن پرچم کو ObjectMapper. آخر میں، ہم نے جیکسن کے ساتھ خوبصورت پرنٹنگ کو فعال کرنے کے لیے اسپرنگ بوٹ کی خصوصیات کو تبدیل کرنے پر ایک نظر ڈالی۔

ٹائم اسٹیمپ:

سے زیادہ Stackabuse