آموزش GSON - قسمت ششم - مدیریت دیتاهای null در سریالایز و دیسریالایز
چهارشنبه, ۱۲ آذر ۱۳۹۹، ۰۷:۴۸ ق.ظ
اگر متد سریالایز به صورت زیر باشد:
private void serialize() {
User user = new User(
"Maryam",
"Maryamflower111@yahoo.com",
28,
null
);
Gson gson = new Gson();
String s = gson.toJson(user);
}
خروجی همانند زیر خواهد بود:
{
"email": "Maryamflower111@yahoo.com",
"name": "Maryam",
"age": 28
}
نتیجه اخلاقی: فیلد نال در جیسون وجود نخواهد داشت.
اگر متد دیسریالایزر به صورت زیر باشد (فیلد isDeveloper در جیسون وجود ندارد):
private void deSerialize() {
String jsonSrc ="{\n" +
" \"name\": \"Maryam goli\",\n" +
" \"email\": \"Maryamflower111@yahoo.com\",\n" +
" \"age\": 28\n" +
"}";
User user = new Gson().fromJson(jsonSrc, User.class);
}
خروجی:
نتیجه اخلاقی: فیلد isDeveloper نال خواهد بود.
اینجا isDeveloper از نوع Boolean بود، اگر از جنس primitiveها بود چی؟ در این صورت مقدار پیش فرض رو میگرفت. یعنی false برای boolean و صفر برای int اینا.
سوال: حالا چیکار کنیم مقدار null رو سریالایز کنه؟
برای این کار باید پیکره بندی Gson رو تغییر بدیم و از GsonBuilder استفاده کنیم. به صورت زیر:
private void serialize() {
User user = new User(
"Maryam",
"Maryamflower111@yahoo.com",
28,
null
);
Gson gson = new GsonBuilder().serializeNulls().create();
String s = gson.toJson(user);
}
خروجی:
{
"email": "Maryamflower111@yahoo.com",
"isDeveloper": null,
"name": "Maryam",
"age": 28
}
۹۹/۰۹/۱۲