Java Spring Web Serialize свойства дочернего класса - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть проект Maven Java Spring Rest, где я хочу это сделать.

@RestController
@RequestMapping("/person")
public class PersonController {
  @GetMapping
  public List<Person> getPerson(){

    List<Person> persons = new ArrayList<>();

    persons.add(new Dev(1, "Java")); //Let's say I have the constructor
    persons.add(new DevOps(2, "Linux")); //Let's say I have the constructor

    return implants;
  }
}

  public class Person{ public int id;}

  public class Dev extends Person{ public string lang;}

  public class DevOps extends Person{ public string env;}

И я хочу, чтобы результат был

[

{id:1, lang: "Java"}, // <- это Dev </p>

{id: 2, env: "Linux"}, // <- это DevOps </p>

]

И не только

[

{id: 1}, // <- это Dev </p>

{id: 2}, //<- это DevOps </p>

]

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Я нашел решение, в моем примере из реальной жизни все свойства были частными, и я забыл создать геттер.

0 голосов
/ 22 ноября 2018

Попытка воспроизвести вашу проблему, но она не удалась:

@RestController
@RequestMapping("/person")
public class PersonController {

    @GetMapping
    public List<Person> getPerson(){
        List<Person> persons = new ArrayList<>();

        persons.add(new Dev(1, "Java")); //Let's say I have the constructor
        persons.add(new DevOps(2, "Linux")); //Let's

        return persons;
    }
}

public class Person {
    public int id;

    public Person(int id) {
        this.id = id;
    }
}

public class Dev extends Person {
    public String lang;

    public Dev(int id, String lang) {
        super(id);
        this.lang = lang;
    }
}

public class DevOps extends Person {
    public String env;

    public DevOps(int id, String env) {
        super(id);
        this.env = env;
    }
}

Результат:

http://localhost:8080/person/

[{"id":1,"lang":"Java"},{"id":2,"env":"Linux"}]

Вы уверены, что разместили весь соответствующий код?Поскольку вы указали Let's say I have the constructor, я могу только предположить, что вы создали их правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...