Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Java > Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 30.07.2019, 12:01   #1
Samogon_Garry
Пользователь
 
Регистрация: 30.07.2019
Сообщений: 14
По умолчанию считывание нескольких объектов из jackson

добрый день
стоит задача, одним махом передать несколько разных объектов через GSON
Код:
{
"storage":{
		"id":"0",
		"formatsSupported": "txt, doc, png",
		"storageCountry": "TestFormat",
		"storageMaxSize": "1000"
		},
"file":{
		"id": "43"
		"name": "TestName",
		"format": "txt",
		"size": "555"
	}
}

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

Последний раз редактировалось Samogon_Garry; 30.07.2019 в 12:22.
Samogon_Garry вне форума Ответить с цитированием
Старый 30.07.2019, 12:10   #2
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,491
По умолчанию

Что именно не получается?

Покажите свои наработки, конкретные вопросы и т.п.
Alex11223 на форуме Ответить с цитированием
Старый 30.07.2019, 12:21   #3
Samogon_Garry
Пользователь
 
Регистрация: 30.07.2019
Сообщений: 14
По умолчанию

из заготовок мои 2 класса
Код:
@Entity
@Table (name = "FILES")
public class File extends IdEntity{
    @JsonProperty("id")
    private long id;
    @JsonProperty("name")
    private String name;
    @JsonProperty("format")
    private String format;
    @JsonProperty("size")
    private long size;
    @JsonIgnore
    private Storage storage;

    @Autowired
    public File(long id, String name, String format, long size) {
        this.id = id;
        this.name = name;
        this.format = format;
        this.size = size;
    }

    public File() {
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        File file = (File) o;

        if (id != file.id) return false;
        return name != null ? name.equals(file.name) : file.name == null;
    }

    @Override
    public int hashCode() {
        int result = (int) (id ^ (id >>> 32));
        result = 31 * result + (name != null ? name.hashCode() : 0);
        return result;
    }

    @Override
    public String toString() {
        return "File{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", format='" + format + '\'' +
                ", size=" + size +
                ", storage=" + storage +
                '}';
    }


    @Id
    @SequenceGenerator(name = "FILE_SEQ", sequenceName = "FILES_SEQ", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "FILE_SEQ")
    @Column (name = "ID")
    public long getId() {
        return id;
    }

    @Column (name = "NAME")
    public String getName() {
        return name;
    }

    @Column (name = "FORMAT")
    public String getFormat() {
        return format;
    }

    @Column (name = "SIZING")
    public long getSize() {
        return size;
    }

    @OneToOne(cascade = {CascadeType.PERSIST,CascadeType.MERGE})
    @JoinColumn (name = "STORAGE_ID")
    public Storage getStorage() {
        return storage;
    }



    public void setId(long id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setFormat(String format) {
        this.format = format;
    }

    public void setSize(long size) {
        this.size = size;
    }

    public void setStorage(Storage storage) {
        this.storage = storage;
    }
}
Код:
@Entity
@Table (name = "STORAGE")
public class Storage extends IdEntity {
    @JsonProperty("id")
    private long id;
    @JsonProperty("formatsSupported")
    private String formatsSupported;
    @JsonProperty("storageCountry")
    private String storageCountry;
    @JsonProperty("storageMaxSize")
    private long storageMaxSize;


    public Storage(long id, String formatsSupported, String storageCountry, long storageMaxSize) {
        this.id = id;
        this.formatsSupported = formatsSupported;
        this.storageCountry = storageCountry;
        this.storageMaxSize = storageMaxSize;
    }

    public Storage() {
    }

    @Override
    public String toString() {
        return "Storage{" +
                "id=" + id +
                ", formatsSupported=" + formatsSupported +
                ", storageCountry='" + storageCountry + '\'' +
                ", storageMaxSize=" + storageMaxSize +
                '}';
    }

    @Id
    @SequenceGenerator(name = "STORAGE_SEQ", sequenceName = "STORAGES_SEQ", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "STORAGE_SEQ")
    @Column (name = "ID")
    public long getId() {
        return id;
    }


    @Column (name = "STORAGEMAXSIZE")
    public long getStorageMaxSize() {
        return storageMaxSize;
    }

    @Column (name = "FORMATSSUPPORTED")
    public String getFormatsSupported() {
        return formatsSupported;
    }

    @Column (name = "STORAGECOUNTRY")
    public String getStorageCountry() {
        return storageCountry;
    }

    public void setId(long id) {
        this.id = id;
    }

    public void setFormatsSupported(String formatsSupported) {
        this.formatsSupported = formatsSupported;
    }

    public void setStorageCountry(String storageCountry) {
        this.storageCountry = storageCountry;
    }

    public void setStorageMaxSize(long storageMaxSize) {
        this.storageMaxSize = storageMaxSize;
    }
}
и метод
Код:
 @RequestMapping(method = RequestMethod.GET, value = "put", produces = "text/plain")
    public @ResponseBody
    void doGet (HttpServletRequest req, HttpServletResponse resp){

             try (BufferedReader br = req.getReader()) {
                     storage = mapper.readValue(br, Storage.class);
                     file = mapper.readValue(br, File.class);
                System.out.println(service.put(storage, file));

            } catch (Exception e){
                 System.out.println(e.getMessage());
             }
        }
Samogon_Garry вне форума Ответить с цитированием
Старый 30.07.2019, 12:25   #4
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,491
По умолчанию

Так а проблема-то в чем?
Alex11223 на форуме Ответить с цитированием
Старый 30.07.2019, 12:27   #5
Samogon_Garry
Пользователь
 
Регистрация: 30.07.2019
Сообщений: 14
По умолчанию

в том что мне нужно получить 2 объекта, а в данном случае я могу получить максимум один
Samogon_Garry вне форума Ответить с цитированием
Старый 30.07.2019, 12:31   #6
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,491
По умолчанию

Ну в первом сообщении объект с двумя свойствами.

Смотрите как к ним обращаться в вашей библиотеке для парсинга JSON.
Alex11223 на форуме Ответить с цитированием
Ответ
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание нескольких (группы) 3D объектов в wpf p0keT WPF, UWP, WinRT, XAML 4 05.03.2015 18:37
1 обработчик события для нескольких объектов __123 Общие вопросы по Java, Java SE, Kotlin 1 25.09.2012 00:24
Перетаскивание нескольких объектов на форме Montysson Общие вопросы Delphi 3 17.06.2012 17:10
Общий обработчик для нескольких объектов Strombald Помощь студентам 10 23.12.2009 23:57
Одна функция для нескольких объектов Salomon Помощь студентам 2 25.11.2008 17:32