JAVAPRO_IR Telegram 4571
✳️ کار با JsonNode و Tree Model در Jackson — دسترسی به داده‌های JSON بدون نیاز به ساخت کلاس

در بسیاری از مواقع، ممکن است بخواهید به داده‌های داخل یک فایل یا رشته‌ی JSON دسترسی پیدا کنید بدون اینکه ابتدا کلاس جاوایی (POJO) برای آن بسازید. در این حالت، کتابخانه‌ی Jackson راهکاری قدرتمند به نام Tree Model API ارائه می‌دهد که با استفاده از کلاس `JsonNode`، امکان پیمایش و خواندن داده‌ها را به‌صورت درختی فراهم می‌کند.


🔹 ۱. مفهوم Tree Model در Jackson
در این مدل، داده‌ی JSON مانند یک درخت در نظر گرفته می‌شود که شامل گره‌ها (Nodes) است.
هر گره می‌تواند یک Object،Array، یا Value باشد.
کلاس اصلی برای کار با این مدل، `JsonNode` است که از طریق `ObjectMapper` ساخته می‌شود.


🔹 ۲. نمونه‌ی کد — خواندن و دسترسی به داده‌ها


import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonNodeExample {
public static void main(String[] args) throws Exception {
String json = """
{
"name": "Saleh",
"age": 25,
"skills": ["Java", "Spring", "Networking"],
"address": {
"city": "Tehran",
"country": "Iran"
}
}
""";

ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(json);

// دسترسی به مقادیر
String name = root.get("name").asText();
int age = root.get("age").asInt();
String firstSkill = root.get("skills").get(0).asText();
String city = root.get("address").get("city").asText();

System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("First Skill: " + firstSkill);
System.out.println("City: " + city);
}
}


📍 خروجی برنامه:


Name: Saleh
Age: 25
First Skill: Java
City: Tehran



🔹 ۳. بررسی دقیق‌تر JsonNode

* متد get() برای دسترسی به یک کلید خاص در شیء JSON استفاده می‌شود.
* متد asText()`، `asInt() و سایر متدهای asType() برای تبدیل مقدار گره به نوع داده‌ی مورد نظر کاربرد دارند.
* می‌توانید با متد isArray() و isObject() نوع گره را بررسی کنید.


🔹 ۴. مثال پیشرفته‌تر — پیمایش روی آرایه‌ها


for (JsonNode skill : root.get("skills")) {
System.out.println("Skill: " + skill.asText());
}


📍 خروجی:


Skill: Java
Skill: Spring
Skill: Networking



🧠 جمع‌بندی:
استفاده از JsonNode و Tree Model در Jackson زمانی مفید است که:

* ساخت کلاس برای JSON ضروری نیست یا داده‌ها پویا هستند.
* می‌خواهید تنها بخشی از داده را بخوانید.
* نیاز دارید ساختار JSON را بررسی یا تحلیل کنید.

اگر داده‌های JSON ساختار ثابتی دارند، بهتر است از Data Binding (با کلاس‌های جاوا) استفاده کنید، اما اگر داده‌ها پویا یا ناشناخته‌اند، Tree Model بهترین گزینه است.

#کاربرـحرفهـای


🆔 @javapro_ir
🆔 @group_javapro
👍3



tgoop.com/javapro_ir/4571
Create:
Last Update:

✳️ کار با JsonNode و Tree Model در Jackson — دسترسی به داده‌های JSON بدون نیاز به ساخت کلاس

در بسیاری از مواقع، ممکن است بخواهید به داده‌های داخل یک فایل یا رشته‌ی JSON دسترسی پیدا کنید بدون اینکه ابتدا کلاس جاوایی (POJO) برای آن بسازید. در این حالت، کتابخانه‌ی Jackson راهکاری قدرتمند به نام Tree Model API ارائه می‌دهد که با استفاده از کلاس `JsonNode`، امکان پیمایش و خواندن داده‌ها را به‌صورت درختی فراهم می‌کند.


🔹 ۱. مفهوم Tree Model در Jackson
در این مدل، داده‌ی JSON مانند یک درخت در نظر گرفته می‌شود که شامل گره‌ها (Nodes) است.
هر گره می‌تواند یک Object،Array، یا Value باشد.
کلاس اصلی برای کار با این مدل، `JsonNode` است که از طریق `ObjectMapper` ساخته می‌شود.


🔹 ۲. نمونه‌ی کد — خواندن و دسترسی به داده‌ها


import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonNodeExample {
public static void main(String[] args) throws Exception {
String json = """
{
"name": "Saleh",
"age": 25,
"skills": ["Java", "Spring", "Networking"],
"address": {
"city": "Tehran",
"country": "Iran"
}
}
""";

ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(json);

// دسترسی به مقادیر
String name = root.get("name").asText();
int age = root.get("age").asInt();
String firstSkill = root.get("skills").get(0).asText();
String city = root.get("address").get("city").asText();

System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("First Skill: " + firstSkill);
System.out.println("City: " + city);
}
}


📍 خروجی برنامه:


Name: Saleh
Age: 25
First Skill: Java
City: Tehran



🔹 ۳. بررسی دقیق‌تر JsonNode

* متد get() برای دسترسی به یک کلید خاص در شیء JSON استفاده می‌شود.
* متد asText()`، `asInt() و سایر متدهای asType() برای تبدیل مقدار گره به نوع داده‌ی مورد نظر کاربرد دارند.
* می‌توانید با متد isArray() و isObject() نوع گره را بررسی کنید.


🔹 ۴. مثال پیشرفته‌تر — پیمایش روی آرایه‌ها


for (JsonNode skill : root.get("skills")) {
System.out.println("Skill: " + skill.asText());
}


📍 خروجی:


Skill: Java
Skill: Spring
Skill: Networking



🧠 جمع‌بندی:
استفاده از JsonNode و Tree Model در Jackson زمانی مفید است که:

* ساخت کلاس برای JSON ضروری نیست یا داده‌ها پویا هستند.
* می‌خواهید تنها بخشی از داده را بخوانید.
* نیاز دارید ساختار JSON را بررسی یا تحلیل کنید.

اگر داده‌های JSON ساختار ثابتی دارند، بهتر است از Data Binding (با کلاس‌های جاوا) استفاده کنید، اما اگر داده‌ها پویا یا ناشناخته‌اند، Tree Model بهترین گزینه است.

#کاربرـحرفهـای


🆔 @javapro_ir
🆔 @group_javapro

BY برنامه نویسی جاوا | Java


Share with your friend now:
tgoop.com/javapro_ir/4571

View MORE
Open in Telegram


Telegram News

Date: |

Done! Now you’re the proud owner of a Telegram channel. The next step is to set up and customize your channel. Deputy District Judge Peter Hui sentenced computer technician Ng Man-ho on Thursday, a month after the 27-year-old, who ran a Telegram group called SUCK Channel, was found guilty of seven charges of conspiring to incite others to commit illegal acts during the 2019 extradition bill protests and subsequent months. The administrator of a telegram group, "Suck Channel," was sentenced to six years and six months in prison for seven counts of incitement yesterday. Choose quality over quantity. Remember that one high-quality post is better than five short publications of questionable value. The group’s featured image is of a Pepe frog yelling, often referred to as the “REEEEEEE” meme. Pepe the Frog was created back in 2005 by Matt Furie and has since become an internet symbol for meme culture and “degen” culture.
from us


Telegram برنامه نویسی جاوا | Java
FROM American