Ahmad_kelany Ответов: 1

Как сериализовать list<customobject> с помощью gson ?


Всем привет,
У меня есть класс для сотрудников :

import java.util.List;
public class Employee {
    private String name;
    private String profession;
    private Integer profId;
    private List<String> roles;

    public String getName() {
        return name;
    }

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

    public String getProfession() {
        return profession;
    }

    public void setProfession(String profession) {
        this.profession = profession;
    }

    public Integer getProfId() {
        return profId;
    }

    public void setProfId(Integer profId) {
        this.profId = profId;
    }

    public List<String> getRoles() {
        return roles;
    }

    public void setRoles(List<String> roles) {
        this.roles = roles;
    }

    @Override
    public String toString() {
        String result = name + "\n" + profession + "\n"
                + profId + "\n" + roles.toString();

        return result;
    }

}


Я пытаюсь создать представление Json для списка сотрудников :

List<Employee> emps = new ArrayList<>();
Employee emp1 = new Employee(){
            {
                setName("Hassan");
                setProfession("doctor");
                setProfId(52);
                setRoles( Arrays.asList("surgeon" ,  "nose"));
            }};

        Employee emp2 = new Employee(){
            {
                setName("Jack");
                setProfession("Developer");
                setProfId(52);
                setRoles( Arrays.asList("Java" ));
            }};

        Employee emp3 = new Employee(){
            {
                setName("Safy");
                setProfession("Driver");
                setProfId(52);
                setRoles( Arrays.asList("Nice" , "Kind" ));
            }};

        emps.add(emp1);
        emps.add(emp2);
        emps.add(emp3);
Gson gson = new Gson();
Type type = new TypeToken<List<Employee>>(){}.getType();
String jsonString = gson.toJson(emps,type);



Результирующая jsonString = "[null,null,null]"

в отладке список emps имеет 3 сотрудника как и ожидалось и ни один из них не является нулевым

Как это можно сделать правильно ?

Большое спасибо!

Что я уже пробовал:

Я искал,
все ответы говорили о том, что я должен просто использовать TypeToken при объявлении типа witch, который я сделал, но безрезультатно,

1 Ответов

Рейтинг:
6

CPallini

Удалите инициализации двойных скобок, см. здесь: Что такое инициализация двойной скобки в Java? - переполнение стека[^].


Ahmad_kelany

Большое спасибо!
Ты спасаешь мне жизнь :)

CPallini

Добро пожаловать.
Это была интересная проблема.