Spring Boot এর সাথে Jackson ব্যবহার করা

Java Technologies - জ্যাকসন (Jackson) - Jackson এবং Spring Boot Integration
194

Jackson হলো Spring Boot-এ ডিফল্ট JSON সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন লাইব্রেরি। এটি Spring Boot-এর মাধ্যমে JSON ডেটা প্রক্রিয়াকরণ সহজ করে। Spring Boot অটোমেটিকভাবে Jackson-কে কনফিগার করে RESTful API-তে ইনপুট এবং আউটপুট JSON ডেটার জন্য।


Spring Boot এবং Jackson Integration কেন গুরুত্বপূর্ণ?

  1. JSON হ্যান্ডলিং সহজ করা: Spring Boot-এর মাধ্যমে Jackson স্বয়ংক্রিয়ভাবে ইনপুট (JSON থেকে Java) এবং আউটপুট (Java থেকে JSON) পরিচালনা করে।
  2. Custom Serialization/Deserialization: JSON ডেটা কাস্টমাইজ করার জন্য সহজ ইন্টিগ্রেশন।
  3. Configuration Automation: Spring Boot অটোমেটিক Jackson কনফিগারেশন সরবরাহ করে।
  4. REST API Development: JSON হলো RESTful API-এর প্রধান ডেটা ফরম্যাট, যা Jackson সহজ করে।
  5. ডেটা ভ্যালিডেশন: Spring Boot Bean Validation এবং Jackson একত্রে JSON ডেটার যাচাই নিশ্চিত করে।

Spring Boot-এ Jackson ব্যবহার করার ধাপসমূহ

১. Maven ডিপেন্ডেন্সি (অত্যাবশ্যক নয়)

Spring Boot Starter Web ডিপেন্ডেন্সি ব্যবহার করলে Jackson ডিফল্টভাবে অন্তর্ভুক্ত থাকে। তবুও, যদি প্রয়োজন হয়, নিম্নলিখিত ডিপেন্ডেন্সি যুক্ত করুন:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.0</version>
</dependency>

২. REST Controller তৈরি করুন

import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/users")
public class UserController {

    @PostMapping
    public User createUser(@RequestBody User user) {
        // JSON থেকে Java Object (Deserialization)
        System.out.println("Received User: " + user.getName() + ", Age: " + user.getAge());
        return user; // Java Object থেকে JSON (Serialization)
    }
}

৩. Model Class তৈরি করুন

import com.fasterxml.jackson.annotation.JsonProperty;

public class User {

    @JsonProperty("user_name") // JSON ফিল্ডের নাম কাস্টমাইজ করা
    private String name;

    private int age;

    // Getters এবং Setters
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

৪. Request এবং Response JSON উদাহরণ

Request JSON:
{
  "user_name": "John Doe",
  "age": 25
}
Response JSON:
{
  "user_name": "John Doe",
  "age": 25
}

Spring Boot-এ Custom Serialization এবং Deserialization

Custom Serializer

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;

public class CustomUserSerializer extends JsonSerializer<User> {

    @Override
    public void serialize(User user, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        gen.writeStartObject();
        gen.writeStringField("name", user.getName().toUpperCase());
        gen.writeNumberField("age", user.getAge());
        gen.writeEndObject();
    }
}

Custom Deserializer

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import java.io.IOException;

public class CustomUserDeserializer extends JsonDeserializer<User> {

    @Override
    public User deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
        User user = new User();
        user.setName(p.readValueAsTree().get("name").asText().toLowerCase());
        user.setAge(p.readValueAsTree().get("age").asInt());
        return user;
    }
}

ObjectMapper Configuration

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class JacksonConfig {

    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper objectMapper = new ObjectMapper();
        SimpleModule module = new SimpleModule();
        module.addSerializer(User.class, new CustomUserSerializer());
        module.addDeserializer(User.class, new CustomUserDeserializer());
        objectMapper.registerModule(module);
        return objectMapper;
    }
}

Spring Boot-এ Common Jackson Annotations

  1. @JsonProperty: ফিল্ডের JSON নাম কাস্টমাইজ করতে।
  2. @JsonIgnore: একটি ফিল্ড JSON সিরিয়ালাইজেশনে অন্তর্ভুক্ত না করতে।
  3. @JsonInclude: শর্তসাপেক্ষে ফিল্ড অন্তর্ভুক্ত করতে।

    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String address;
    
  4. @JsonFormat: ডেটা ফরম্যাট কাস্টমাইজ করতে (যেমন, তারিখ)।

    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate birthDate;
    
  5. @JsonCreator এবং @JsonValue: Custom deserialization এবং serialization এর জন্য।

Spring Boot এবং Jackson Integration এর উপকারিতা

  1. সহজ JSON হ্যান্ডলিং: ইনপুট এবং আউটপুট JSON স্বয়ংক্রিয়ভাবে প্রক্রিয়াকরণ।
  2. ডেটা কাস্টমাইজেশন: Custom Serializer এবং Deserializer দিয়ে JSON ডেটা কাস্টমাইজ করা যায়।
  3. অ্যানোটেশন সাপোর্ট: Bean Validation এবং Jackson এর অ্যানোটেশন ব্যবহার করে ডেটা যাচাই এবং প্রক্রিয়াকরণ।
  4. RESTful API ডেভেলপমেন্ট: Spring Boot-এর মাধ্যমে RESTful API ডেভেলপমেন্ট আরো সহজ হয়।
  5. ডেটা ভ্যালিডেশন: JSON ইনপুট ভ্যালিডেশন নিশ্চিত করতে Bean Validation এর সাথে Integration।

Spring Boot-এর সাথে Jackson একটি শক্তিশালী এবং কার্যকর সমাধান যা JSON সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন প্রক্রিয়া সহজ করে। এটি RESTful API ডেভেলপমেন্টে অত্যন্ত উপযোগী এবং ডেটা ইন্টিগ্রিটি ও নিরাপত্তা নিশ্চিত করতে বিশেষ ভূমিকা পালন করে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...