SpringBoot: развернуть дочерний объект в ответе RestController - PullRequest
1 голос
/ 17 февраля 2020

Доброе утро, сообщество,

Я новичок в SringBoot (и Java).

Мне не удается выполнить простую задачу: создать controller, который возвращает Автомобиль и его водитель в json.

У меня есть этот ответ:

{"color":"red","driver":"example"}

Я хочу:

{"color":"red","driver":{"name": "example"}}

Возможно ли это сделать без ObjectMapper, надеюсь, есть аннотация, которая добьется цели.

Спасибо за ваше время, хорошего дня.

Мой Контроллер:


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class CarController {

    @GetMapping("/car/{driverName}")
    public Car cars(
            @PathVariable(value = "driverName") String driverName
    ) {
        driverName = "example";
        Driver driver = new Driver();
        driver.setName(driverName);
        Car car = new Car();
        car.setDriver(driver);
       return car;
    }
}

Мой класс автомобиля:


import org.springframework.stereotype.Component;

import java.io.Serializable;

@Component
public class Car {

    public Driver driver;
    public String color ="red";

    public Car() {
    }

    public String getDriver() {
        return this.driver;
    }

    public String getColor() {
        return color;
    }

    public void setDriver(Driver driver) {
        this.driver = driver;
    }

    public void setColor(String color) {
        this.color = color;
    }
}

Мой класс водителя:


import org.springframework.stereotype.Component;

import java.io.Serializable;

@Component
public class Driver {

    public String name;

    public Driver() {
    }

    public String getName() {
        return this.name;
    }

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

1 Ответ

3 голосов
/ 17 февраля 2020

В вашем классе Car есть проблема, метод getDriver возвращает String, но он должен возвращать объект Driver, попробуйте:

import org.springframework.stereotype.Component;

import java.io.Serializable;

@Component
public class Car {

    public Driver driver;
    public String color ="red";

    public Car() {
    }

    public Driver getDriver() {
        return this.driver;
    }

    public String getColor() {
        return color;
    }

    public void setDriver(Driver driver) {
        this.driver = driver;
    }

    public void setColor(String color) {
        this.color = color;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...