Конвертация Java объектов есть одним из часто-используемых в разработке WEB-ресурсов. В этом уроке я покажу, как конвертировать Java объект в JSON или с JSON в Java объект.
Шаг 1
Для того чтобы манипулировать конвертированием мы будем использовать библиотеку Jackson.
Давайте создадим Maven project и добавим в pom.xml следующие зависимости:
<dependencies> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.2.2</version> </dependency> </dependencies>
Шаг 2
Теперь добавим POJO который мы и будем конвертировать:
package pojo; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; public class User { @JsonProperty("Number") private long id; @JsonProperty("First Name") private String name; @JsonProperty("Phone Number") private String phone; @JsonIgnore private String level; public User() { } public User(long id, String name, String phone, String level) { this.id = id; this.name = name; this.phone = phone; this.level = level; } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getLevel() { return level; } public void setLevel(String level) { this.level = level; } @Override public String toString() { return "User[ID:" + id + ", Name: " + name + ", Phone: " + phone + "]"; } }
Обратите внимание, обязательно должен быть пустой конструктор и getter & setter.
Как вы видите мы используем две аннотации:
@JsonProperty(“name”) – эта говорит, что данный атрибут в JSON будет именоваться как name
@JsonIgnore – а эта аннотация игнорирует данный атрибут и в результате конвертирования он не будет добавлен в JSON.
Шаг 3
Теперь создадим класс конверте где будут все методы, и назовем его Converter.java:
package util; import com.fasterxml.jackson.databind.ObjectMapper; import pojo.User; import java.io.File; import java.io.IOException; public class Converter { private final static String baseFile = "user.json"; public static void toJSON(User user) throws IOException { ObjectMapper mapper = new ObjectMapper(); mapper.writeValue(new File(baseFile), user); System.out.println("json created!"); } public static User toJavaObject() throws IOException { ObjectMapper mapper = new ObjectMapper(); return mapper.readValue(new File(baseFile), User.class); } }
В результате выполнения появится файл user.json:
{"Number":1,"First Name":"Alex","Phone Number":"+38000000001"}
И после конвертации обратно в POJO мы получим объект с полями:
User[ID:1, Name: Alex, Phone: +38000000001]
Возникнут вопросы, выслушаю вас в комментариях.
ПОХОЖИЕ ПУБЛИКАЦИИ
- None Found
16 комментариев к статье "Конвертация Java объектов в JSON"