Вопросы с собеседования 👩💻
Какой метод возвращает текущую версию Java?
Какой метод возвращает текущую версию Java?
Anonymous Quiz
38%
System.javaVersion()
19%
Runtime.version()
14%
Java.version()
21%
System.getProperty("java.version")
7%
"Идея дай мне Java"
Jackson. Быстрая сериализация и десериализация объектов
Работа с JSON в Jackson строится вокруг главного класса — ObjectMapper. Это основной инструмент для конвертации Java-объектов в JSON и обратно.
ObjectMapper: главный рабочий инструмент
ObjectMapper — это универсальный класс, предоставляющий удобные методы для:
Сериализации (преобразования объекта в JSON)
Десериализации (преобразования JSON обратно в объект)
Создание экземпляра максимально простое:
Сериализация объекта в JSON
Сериализация — это процесс превращения Java-объекта в строку JSON.
Рассмотрим пример:
Результат работы программы:
Десериализация JSON в объект
Десериализация — это обратный процесс: превращение JSON-строки в объект Java.
Пример:
На что обратить внимание
🔹 Обязательны геттеры/сеттеры или public-поля (иначе Jackson не увидит поля).
🔹 Пустой конструктор нужен для десериализации.
🔹 Имена полей JSON и Java должны совпадать (или использовать аннотации, об этом в след. посте).
🔹 Обработка исключений — методы writeValueAsString() и readValue() могут выбросить JsonProcessingException.
#Java #Training #Medium #Jackson
Работа с JSON в Jackson строится вокруг главного класса — ObjectMapper. Это основной инструмент для конвертации Java-объектов в JSON и обратно.
ObjectMapper: главный рабочий инструмент
ObjectMapper — это универсальный класс, предоставляющий удобные методы для:
Сериализации (преобразования объекта в JSON)
Десериализации (преобразования JSON обратно в объект)
Создание экземпляра максимально простое:
ObjectMapper objectMapper = new ObjectMapper();
Сериализация объекта в JSON
Сериализация — это процесс превращения Java-объекта в строку JSON.
Рассмотрим пример:
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) throws Exception {
ObjectMapper objectMapper = new ObjectMapper();
User user = new User("Alice", 25);
String jsonString = objectMapper.writeValueAsString(user);
System.out.println(jsonString);
}
}
class User {
private String name;
private int age;
public User() {
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
// Геттеры и сеттеры обязательны для Jackson
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;
}
}
Результат работы программы:
{"name":"Alice","age":25}
writeValueAsString превращает объект в строку JSON. Можно также сохранить результат сразу в файл через writeValue(new File("user.json"), user).
Десериализация JSON в объект
Десериализация — это обратный процесс: превращение JSON-строки в объект Java.
Пример:
String jsonInput = "{\"name\":\"Bob\",\"age\":30}";
User user = objectMapper.readValue(jsonInput, User.class);
System.out.println(user.getName()); // Выведет: Bob
System.out.println(user.getAge()); // Выведет: 30
readValue принимает JSON и класс, в который нужно преобразовать данные. Важно, чтобы у целевого класса был публичный конструктор без параметров и стандартные геттеры/сеттеры.
На что обратить внимание
🔹 Обязательны геттеры/сеттеры или public-поля (иначе Jackson не увидит поля).
🔹 Пустой конструктор нужен для десериализации.
🔹 Имена полей JSON и Java должны совпадать (или использовать аннотации, об этом в след. посте).
🔹 Обработка исключений — методы writeValueAsString() и readValue() могут выбросить JsonProcessingException.
#Java #Training #Medium #Jackson
Всем привет! 👋
Пользуясь длинными выходными размышляю о дальнейшей судьбе нашего канала.🧑💻
Пытаюсь понять зачем он вообще нужен Вам и мне, какое будущее его ждет?
Ведь изначально, канал был задуман как обучающее подспорье для новичков в Java (и скорее для себя самого), где вообще не зная ничего, можно было что-то подчерпнуть о программировании на Java.
Но сейчас я ушел за middle-уровень, публикуя посты о сложных технологиях, библиотеках и идеях, опираясь на Ваши вопросы и предлжения.
Правильно ли это?
Или стоит немного откатиться к основам, делать посты для совсем новичков, желающих с нуля окунуться в мир программирования?
Возможно, попробовать как-то это совместить?🤔
Кроме того, побродив по множеству тематических каналов, аналогичных нашему, я понял, что изначально задал каналу жесткий формальный стиль. Посты пишутся в строгом понятийном стиле, чтобы вместить максимум информации о вопросе в возможности одного поста, упуская эмоциональную составляющую, личное мнение...
Правильно ли это? Я не знаю...🤔
Может стоит добавлять больше смайлов на каждую строчку‼️
Или какой-то бредовой отсебятины типа: "Ой, я этим пользовался, мне зашло и даже работает"?🤦♂️
Или вообще уйти от концепции обучения, оставив лишь личный блог о моем мнении, историях успехов и провалах? А может сделать вообще солянку про IT в целом?
Все эти вопросы я скорее адресую к тем подписчикам, кто недавно присоединился к каналу и возможно хочет уйти.
Просто интересно, что нужно людям, чего они ищут на канале, почему заходят и потом уходят?
Но и тех кто со мной с самого начала, я попрошу высказаться...🤝
А между тем 26.05 каналу год🎂
Может есть идеи как это отпраздновать?
Ну и подытоживая, скажу, что сегодня будет день посвященный вопросам и ответам.
Хотелось бы узнать мнение всех подписчиков👍
Пользуясь длинными выходными размышляю о дальнейшей судьбе нашего канала.
Пытаюсь понять зачем он вообще нужен Вам и мне, какое будущее его ждет?
Ведь изначально, канал был задуман как обучающее подспорье для новичков в Java (и скорее для себя самого), где вообще не зная ничего, можно было что-то подчерпнуть о программировании на Java.
Но сейчас я ушел за middle-уровень, публикуя посты о сложных технологиях, библиотеках и идеях, опираясь на Ваши вопросы и предлжения.
Правильно ли это?
Или стоит немного откатиться к основам, делать посты для совсем новичков, желающих с нуля окунуться в мир программирования?
Возможно, попробовать как-то это совместить?
Кроме того, побродив по множеству тематических каналов, аналогичных нашему, я понял, что изначально задал каналу жесткий формальный стиль. Посты пишутся в строгом понятийном стиле, чтобы вместить максимум информации о вопросе в возможности одного поста, упуская эмоциональную составляющую, личное мнение...
Правильно ли это? Я не знаю...
Может стоит добавлять больше смайлов на каждую строчку
Или какой-то бредовой отсебятины типа: "Ой, я этим пользовался, мне зашло и даже работает"?
Или вообще уйти от концепции обучения, оставив лишь личный блог о моем мнении, историях успехов и провалах? А может сделать вообще солянку про IT в целом?
Все эти вопросы я скорее адресую к тем подписчикам, кто недавно присоединился к каналу и возможно хочет уйти.
Просто интересно, что нужно людям, чего они ищут на канале, почему заходят и потом уходят?
Но и тех кто со мной с самого начала, я попрошу высказаться...
А между тем 26.05 каналу год
Может есть идеи как это отпраздновать?
Ну и подытоживая, скажу, что сегодня будет день посвященный вопросам и ответам.
Хотелось бы узнать мнение всех подписчиков
Please open Telegram to view this post
VIEW IN TELEGRAM
Каким, по Вашему мнению, уровнем знаний в Java вы обладаете? 🧑💻
Anonymous Poll
9%
Я полный новичок в программировании 😆
26%
Я начинающий, "Hello World" уже не раз выводил 💪
47%
Я настоящий junior, знаю Java Core и могу писать простой код ✌️
11%
Я уже наверняка middle. Я знаю Spring и Quarkus, Redis и Kafka мои неплохие знакомые. ☝️
0%
Я Senior. Уверенно спроектирую и напишу практически любое приложение на Java. 😎
9%
Я не знаю кто я. Наверно, я есть Грут 🌴
Please open Telegram to view this post
VIEW IN TELEGRAM
Почему и зачем вы пришли на канал? 🧑💻 (можно выбрать несколько вариантов)
Anonymous Poll
30%
Я хочу с нуля изучить Java
50%
Я хочу получить информацию о Java уровня junior
41%
Меня заинтересовало что тут разбирают вопросы по Java уровня middle+
25%
Я ищу новый круг знакомых, для совместного обучения 🤝
23%
Я ищу ментора, который укажет мне как и что учить в Java
34%
Я искал канал-библиотеку, чтоб легко найти ответ на любой вопрос по Java 📕
23%
Мне понравились видео с каналов 👍
20%
Я сам не знаю, что я тут забыл 😁 Пока!
2%
Я пришел поглумиться над новичками 😆
Как вы оказались на этом канале? 🧑💻
Anonymous Poll
11%
Я нашел его в JavaRush 🎮
31%
Я натолкнулся на него в YouTube 🎬
0%
Я пришел из RuTube 🚩
13%
Мне посоветовали друзья 👙
24%
Я нашел канал через Телеграм 💭
18%
Я не помню!🍸
2%
Мой вариант в комментариях
Что Вам нравится в канале? (несколько вариантов) 🧑💻
Anonymous Poll
71%
Подробность рассматриваемых тем
53%
Последовательность в рассмотрении тем
53%
Разнообразность постов
50%
Прагматичный подход без смайлов и идиотизма
71%
Отсутствие инфо-цыганства, мне никто ничего не продает
50%
Отсутствие рекламы
0%
Мой вариант в комментариях!
Что Вам не нравится на канале (несколько вариантов) 🧑💻
Anonymous Poll
9%
Слишком подробный разбор, хотелось бы лаконичную выжимку
52%
Слишком много контента. Не успеваю читать
0%
Админ сам ничего не умеет, а пытается учить
9%
Бесполезные встречи. Можно просто делать видео о рассматриваемом вопросе
30%
Лишние посты о биографиях и фактах
17%
Отсутствие обучающих постов в выходные. Мне нужно каждый день!
9%
Мой вариант в комментариях!
This media is not supported in your browser
VIEW IN TELEGRAM
Сеньор-инфоцыган, который не согласился на офферы в Google, Amazon и Uber, чтобы обучить ТЕБЯ
https://t.me/Java_for_beginner_dev
#Mems
https://t.me/Java_for_beginner_dev
#Mems
Ну а теперь, давайте подведем итоги под этим постом.
Несмотря на ранее написанные комментарии выше, я хотел бы, чтобы ВЫ поделились именно тут вашим итоговым мнением о канале.
Делитесь мнениями, я все прочитаю и учту!
Спасибо
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Jackson
Ключевые аннотации для сериализации.
Jackson предоставляет богатый набор аннотаций для управления тем, как Java-объекты сериализуются в JSON. На практике чаще всего используются три основные аннотации: @JsonProperty, @JsonIgnore и @JsonInclude.
@JsonProperty
Аннотация @JsonProperty позволяет задать имя поля в итоговом JSON независимо от имени переменной в Java-классе. Это особенно полезно, если требуется соблюдать определенные соглашения об именовании в JSON (например, использовать snake_case).
Пример:
При сериализации объект будет выглядеть так:
@JsonIgnore
Аннотация @JsonIgnore используется для исключения полей из сериализации и десериализации. Если поле не должно попадать в JSON-вывод или не должно учитываться при чтении JSON, достаточно добавить эту аннотацию.
Пример:
Результат сериализации:
@JsonInclude
Аннотация @JsonInclude позволяет управлять включением полей в JSON в зависимости от их значения. Например, можно настроить сериализацию так, чтобы поля с null не попадали в итоговый JSON.
Пример:
Если email будет null, результат сериализации будет таким:
#Java #Training #Medium #Jackson #JsonProperty #JsonIgnore #JsonInclude
Ключевые аннотации для сериализации.
Jackson предоставляет богатый набор аннотаций для управления тем, как Java-объекты сериализуются в JSON. На практике чаще всего используются три основные аннотации: @JsonProperty, @JsonIgnore и @JsonInclude.
@JsonProperty
Аннотация @JsonProperty позволяет задать имя поля в итоговом JSON независимо от имени переменной в Java-классе. Это особенно полезно, если требуется соблюдать определенные соглашения об именовании в JSON (например, использовать snake_case).
Пример:
import com.fasterxml.jackson.annotation.JsonProperty;
public class User {
@JsonProperty("user_name")
private String name;
private int age;
public User() {}
public User(String name, int age) {
this.name = name;
this.age = age;
}
// Геттеры и сеттеры
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;
}
}
При сериализации объект будет выглядеть так:
{"user_name":"Alice","age":25}
Без @JsonProperty имя поля в JSON было бы "name", но аннотация позволила задать собственное имя.
@JsonIgnore
Аннотация @JsonIgnore используется для исключения полей из сериализации и десериализации. Если поле не должно попадать в JSON-вывод или не должно учитываться при чтении JSON, достаточно добавить эту аннотацию.
Пример:
import com.fasterxml.jackson.annotation.JsonIgnore;
public class User {
private String name;
@JsonIgnore
private String password;
public User() {}
public User(String name, String password) {
this.name = name;
this.password = password;
}
// Геттеры и сеттеры
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
Результат сериализации:
{"name":"Alice"}
Поле password полностью исключено из JSON.
@JsonInclude
Аннотация @JsonInclude позволяет управлять включением полей в JSON в зависимости от их значения. Например, можно настроить сериализацию так, чтобы поля с null не попадали в итоговый JSON.
Пример:
import com.fasterxml.jackson.annotation.JsonInclude;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class User {
private String name;
private String email;
public User() {}
public User(String name, String email) {
this.name = name;
this.email = email;
}
// Геттеры и сеттеры
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Если email будет null, результат сериализации будет таким:
{"name":"Alice"}
Без @JsonInclude поле email также попало бы в JSON с null значением.
#Java #Training #Medium #Jackson #JsonProperty #JsonIgnore #JsonInclude