tgoop.com/javapro_ir/4510
Last Update:
اگر با Spring Boot کار کرده باشید، احتمالاً بدون اینکه متوجه شوید از Jackson استفاده کردهاید.
در واقع Jackson همان کتابخانهای است که کار با JSON را در اپلیکیشنهای مدرن بسیار روان میکند.
🔹 چرا Jackson؟
✍🏻 Serialization (سریالسازی) → تبدیل اشیای جاوا ➝ JSON
✍🏻 Deserialization (دسریالسازی) → تبدیل JSON ➝ اشیای جاوا
فریمورک Spring Boot به صورت خودکار Jackson را همراه با spring-boot-starter-web اضافه میکند، بنابراین نیازی به پیکربندی دستی ندارید.
🔹 چطور کار میکند؟
هر زمان که از انوتیشنهایی مانند @RequestBody یا @ResponseBody استفاده کنید، Spring Boot در پشت صحنه از ObjectMapper متعلق به Jackson استفاده میکند:
✍🏻 readValue() → JSON ➝ شیء جاوا
✍🏻 writeValueAsString() → شیء جاوا ➝ JSON
🔹 اما چرا از @RequestBody استفاده کنیم؟
Jackson را بهعنوان موتور اصلی در نظر بگیرید و @RequestBody را بهعنوان فرمانی که به Spring Boot میگوید:
👉 «JSON خام موجود در درخواست HTTP را بگیر و با کمک Jackson به یک شیء جاوا تبدیل کن.»
بدون @RequestBody، Spring تلاش میکند دادهها را از فیلدهای فرم یا query params بگیرد، و نگاشت JSON شکست میخورد.
✅ مثال بدون @RequestBody
@PostMapping("/add")
public String addUser(User user) {
// ❌ با ورودی JSON کار نخواهد کرد
}
✅ مثال با @RequestBody
@PostMapping("/add")
public String addUser(@RequestBody User user) {
// ✅ بدنه JSON به درستی نگاشت میشود
}
✍🏻 از @RequestBody برای payloadهای JSON در درخواستها استفاده کنید.
✍🏻 بگذارید Jackson کار سنگین سریالسازی و دسریالسازی را انجام دهد
⚡️ @javapro_ir✈️ @group_javapro