Как преобразовать json в объект java
Перейти к содержимому

Как преобразовать json в объект java

  • автор:

Как преобразовать строку JSON в объект Java: шаги и примеры

Преобразование строки JSON в объект Java является обычной задачей в разработке программного обеспечения. Все больше и больше веб-приложений используют JSON для обмена данными между клиентом и сервером. В этой статье мы рассмотрим шаги и приведем примеры кода на JavaScript для преобразования строки JSON в объект Java.

1. Понимание JSON и Java объектов

Перед тем, как мы приступим к преобразованию, давайте рассмотрим, что такое JSON и как он связан с объектами Java.

JSON (JavaScript Object Notation) — это формат обмена данными, основанный на синтаксисе объектов JavaScript. Он используется для представления структурированных данных, которые могут быть легко преобразованы в объекты в различных языках программирования, включая Java.

В Java существует несколько способов преобразования строки JSON в объект Java:

2. Использование библиотеки JSON.simple

JSON.simple — это простая библиотека для работы с JSON в Java. Она предоставляет простые методы для преобразования строки JSON в объект Java и наоборот.

Для начала установите библиотеку JSON.simple, добавив ее в ваш проект. Затем вы можете использовать следующий код для преобразования строки JSON в объект Java:

 import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; String jsonString = ""; JSONParser parser = new JSONParser(); try < JSONObject jsonObject = (JSONObject) parser.parse(jsonString); String name = (String) jsonObject.get("name"); Long age = (Long) jsonObject.get("age"); String city = (String) jsonObject.get("city"); // Используйте значения объекта для создания Java объекта Person person = new Person(name, age, city); >catch (ParseException e) 

3. Использование библиотеки GSON

Google Gson - это библиотека, предоставляющая удобные методы для преобразования между объектами Java и JSON. Она позволяет автоматически преобразовывать JSON в Java-объекты и наоборот, используя аннотации или конфигурацию.

Для использования библиотеки Gson, добавьте зависимость в ваш проект и используйте следующий код:

 import com.google.gson.Gson; String jsonString = ""; Gson gson = new Gson(); Person person = gson.fromJson(jsonString, Person.class); 

4. Постобработка Java объекта

После преобразования строки JSON в объект Java, вы можете выполнить дополнительные операции или обработку этих данных в вашем приложении. Например, вы можете использовать значения полей объекта для создания новых объектов или обновления существующих.

Заключение

Преобразование строки JSON в объект Java - это важная задача, которую разработчикам приходится выполнять на ежедневной основе. В этой статье мы рассмотрели два популярных подхода, используя библиотеки JSON.simple и Gson. Надеюсь, что эта статья помогла вам лучше понять, как преобразовать JSON в объект Java в вашем JavaScript проекте.

Конвертация JSON в объект

для парсинга. Проблема случаеться когда необходимо распарсить объект, который внутри себя содержит другой объект с конструктором.

Вот примеры классов:

Конвертируемый класс:

 public class Block < private Staff staff; public Staff getStaff() < return staff; >public void setStaff(Staff staff) < this.staff = staff; >> 

Класс с конструктором:

public class Staff < private String name; public Staff(String name) < this.name = name; >public String getName() < return name; >public void setName(String name) < this.name = name; >> 

Как возможно конвертнуть его не прибегая к написанию собственного парессера?
Отслеживать
9,103 4 4 золотых знака 20 20 серебряных знаков 28 28 бронзовых знаков
задан 17 окт 2018 в 10:50
11 2 2 бронзовых знака

А в чем собственно проблема? Вылетает исключение? Или просто не мапятся данные на вложенный объект? И не плохо было бы указать, какую библиотеку для маппинга Вы используете.

17 окт 2018 в 11:05
Я так понимаю используется Jackson. Попробуй создать пустой конструктор
17 окт 2018 в 11:25

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Для того чтобы десериализовать JSON не обязательно использовать класс из библиотеки, которую вы не можете изменить, чтобы добавить туда noarg-конструктор. Но вы можете создать наследуемый класс, в котором можно это сделать.

public class StaffJson extends Stuff < public StaffJson() < super(""); >> 

Или же просто создать другую модель и добавить туда конструктор. Потом можно написать метод, который будет конвертировать один объект в другой

 Staff convert(StaffJson sj)

Rukovodstvo

статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.

Как преобразовать объект JSON в объект Java с помощью Джексона

В этом руководстве мы рассмотрим, как преобразовать объект JSON в объект Java с помощью Jackson [https://github.com/FasterXML/jackson], чрезвычайно популярной библиотеки привязки данных для Java. В частности, мы будем работать с этим объектом JSON: > Поскольку мы работаем с внешней библиотекой,

Время чтения: 2 мин.

В этом руководстве мы рассмотрим, как преобразовать объект JSON в объект Java с помощью Jackson , чрезвычайно популярной библиотеки привязки данных для Java.

В частности, мы будем работать с этим объектом JSON:

Поскольку мы работаем с внешней библиотекой, давайте добавим зависимость. Если вы используете Maven, вы можете добавить его с помощью:

  com.fasterxml.jackson.core jackson-databind 2.11.3  

Или, если вы используете Gradle, вы можете добавить:

 implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.11.3' 

Создание настраиваемого класса

После этого мы можем создать простой настраиваемый класс для размещения Employee из содержимого JSON:

 public class Employee < private String name; private POSITION position; private Listskilltree; private Address address; // Constructors, Getters, Setters, toString() > 

Примечание. Если мы хотим, чтобы Джексон мог автоматически связывать свойства нашего класса и свойства в объекте JSON, они должны иметь одинаковые имена. Мы расскажем, как изменить это поведение чуть позже. Кроме того, вам понадобится пустой конструктор для создания экземпляра.

Здесь мы используем перечисление POSITION , которое выглядит так:

 public enum POSITION

И объект Address

 public class Address < private String street; private String streetNo; // Constructors, Getters and Setters, toString() >

Преобразование объекта JSON в объект Java

Центральный класс Джексона - ObjectMapper . Это основной API для привязки данных к объектам, и вы все время будете использовать его с Джексоном.

Чтобы преобразовать объект JSON в объект Java, вы будете использовать метод readValue() ObjectMapper , который десериализует его в предоставленную ссылку на класс:

 String json = " < \"name\":\"David\", \"position\":\"SOFTWARE_ENGINEER\", \"skilltree\":[ \"Java\", \"Python\", \"JavaScript\" ], \"address\":< \"street\":\"Street\", \"streetNo\":\"123\" >>"; // ObjectMapper instantiation ObjectMapper objectMapper = new ObjectMapper(); // Deserialization into the `Employee` class Employee employee = objectMapper.readValue(json, Employee.class); // Print information System.out.println(employee); 

Выполнение этого кода приведет к:

 Employee> 

Другой способ сообщить Джексону, в какой класс следует десериализоваться, - использовать TypeReference :

 Employee employee = objectMapper.readValue(json, new TypeReference()<>); 

Печать этого employee также приведет к:

 Employee> 

Оба они создают данный объект и вызывают один и тот же процесс десериализации. Таким образом, единственная разница между этими двумя вызовами заключается в том, делаете ли вы статическую или динамическую ссылку на тип.

Licensed under CC BY-NC-SA 4.0

Преобразование из json в объект Java

В таких случаях идете на этот прекрасный ресурс: http://www.jsonschema2pojo.org/ Создаете себе POJO для ваших классов :

public class Cast < @SerializedName("fullName") @Expose private String fullName; @SerializedName("role") @Expose private String role; public String getFullName() < return fullName; >public void setFullName(String fullName) < this.fullName = fullName; >public String getRole() < return role; >public void setRole(String role) < this.role = role; >> package com.example; import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; public class Director < @SerializedName("fullName") @Expose private String fullName; public String getFullName() < return fullName; >public void setFullName(String fullName) < this.fullName = fullName; >> package com.example; import java.util.List; import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; public class Movie < @SerializedName("name") @Expose private String name;@SerializedName("year") @Expose private Integer year; @SerializedName("description") @Expose private String description; @SerializedName("director") @Expose private Director director; @SerializedName("cast") @Expose private Listcast = null; public String getName() < return name; >public void setName(String name) < this.name = name; >public Integer getYear() < return year; >public void setYear(Integer year) < this.year = year; >public String getDescription() < return description; >public void setDescription(String description) < this.description = description; >public Director getDirector() < return director; >public void setDirector(Director director) < this.director = director; >public List getCast() < return cast; >public void setCast(List cast) < this.cast = cast; >> package com.example; import java.util.List; import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; public class Response < @SerializedName("movie") @Expose private Listmovie = null; public List getMovie() < return movie; >public void setMovie(List movie)

Ну и потом все просто (надеюсь у Вас добавлены все необходимые зависимости добавляющие Gson в Ваш проект)

Gson gson = new Gson(); Response response = gson.fromJson(yourJson, Response.class); List movies = response.getMovie(); 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *