【发布时间】:2019-01-07 22:57:47
【问题描述】:
我正在使用spring-boot-starter-web,我想使用总线的sideNumber 作为Id 值并在JSON 响应中返回该值。
可能很简单,但我发现的所有内容都与 Spring Data Rest 相关。
这是我的实体类:
@Entity
@Table(name = "buses")
class Bus(
@Id
@JsonProperty("sideNumber")
@JsonInclude
private val sideNumber: Int,
@NotBlank
var longitude: Double,
@NotBlank
var latitude: Double
)
我尝试用@JsonInclude 和@Jsonproperty 注释sideNumber(Id) 属性,但没有成功。在我的 JSON 响应中,我只得到经度和纬度。
我的控制器如下所示:
@RestController
@RequestMapping("/api")
class BusController {
@Autowired
private lateinit var busRepository: BusRepository
@GetMapping("/buses")
fun getAllBuses(): List<Bus> {
return busRepository.findAll()
}
@PostMapping("/buses")
fun createBus(@Valid @RequestBody bus: Bus): Bus {
return busRepository.save(bus)
}
@GetMapping("/buses/{sideNumber}")
fun getBusById(@PathVariable(value = "sideNumber") sideNumber: Long): Bus {
return busRepository.findById(sideNumber)
.orElseThrow { ResourceNotFoundException("Bus", "sideNumber", sideNumber) }
}
@PutMapping("/buses/{sideNumber}")
fun updateBus(@PathVariable(value = "sideNumber") sideNumber: Long,
@Valid @RequestBody newBus: Bus): Bus {
val bus = busRepository.findById(sideNumber)
.orElseThrow { ResourceNotFoundException("Bus", "sideNumber", sideNumber) }
bus.latitude = newBus.latitude
bus.longitude = newBus.longitude
return busRepository.save(bus)
}
@DeleteMapping("/buses/{sideNumber}")
fun deleteBus(@PathVariable(value = "sideNumber") sideNumber: Long): ResponseEntity<*> {
val bus = busRepository.findById(sideNumber)
.orElseThrow { ResourceNotFoundException("Bus", "sideNumber", sideNumber) }
busRepository.delete(bus)
return ResponseEntity.ok().build<Any>()
}
}
我必须做些什么才能将此 sideNumber(id) 属性包含到 JSON 响应中?
【问题讨论】:
标签: json spring spring-boot kotlin jackson