জাভা এবং স্প্রিং বুটে জ্যাকসনের সাথে প্রিটি-প্রিন্টিং JSON

জাভা এবং স্প্রিং বুটে সিরিয়ালাইজেশন এবং ডিসিরিয়ালাইজেশনের সাথে কাজ করার জন্য জ্যাকসন সবচেয়ে সাধারণ লাইব্রেরিগুলির মধ্যে একটি, প্রাথমিকভাবে POJO এবং 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;
    }
    

এর একটি তাত্ক্ষণিক করা যাক 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-থেকে-অবজেক্ট) থেকে পড়া হয়েছিল, এবং এই বস্তুর মানটি প্রিটি-প্রিন্টিং (অবজেক্ট-টু-জেএসএন) ব্যবহার করে একটি স্ট্রিং-এ লেখা হয়েছিল:

{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 স্ট্রিং ফর্ম্যাট করার একটি দ্রুত এবং সহজ উপায়! POJO-এর সাথে কাজ করার সময়, প্রদত্ত ইনপুট থেকে পড়ার পরিবর্তে, আমরা শুধুমাত্র অবজেক্ট-টু-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"
}

POJO এর সাথে:

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

সেরা-অভ্যাস, শিল্প-স্বীকৃত মান এবং অন্তর্ভুক্ত চিট শীট সহ গিট শেখার জন্য আমাদের হ্যান্ডস-অন, ব্যবহারিক গাইড দেখুন। গুগলিং গিট কমান্ড এবং আসলে বন্ধ করুন শেখা এটা!

{
  "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