java - Spring REST 控制器映射 JSON
问题描述
想知道是否有人可以帮助我。我有一个 JSON 请求
{
"blue": "blue",
"red": "red",
"greens" : {
"lightGreen": "lightGreen",
"darkGreen": "darkGreen"
}
}
我想映射到pojo
使用@RequestBody
这样做:
@PostMapping(path = "/colors", headers = "Accept=application/json")
public void generateClaimDocument(@Valid @RequestBody Colors colors) {
if (colors != null) {
service.doSomethingWithColors(colors);
}
}
这适用于蓝色和红色,但它根本不映射 JSON 绿色对象。以前从未这样做过,所以有人可以阐明我如何做到这一点吗?
波乔的:
public class Colors {
private String blue;
private String red;
private Greens greens;
//getters and setters
}
public class Greens {
private String lightGreen;
private String darkGreen;
//getters and setters
}
解决方案
使用您的代码我找不到任何问题。试过这个例子:
@RestController
public static class ColorsService {
@PostMapping(path = "/colors", headers = "Accept=application/json")
public void generateClaimDocument(@Valid @RequestBody Colors colors) {
if (colors != null) {
System.out.println(colors);
}
}
}
public static class Colors {
private String blue;
private String red;
private Greens greens;
//getters and setters
public String getBlue() {
return blue;
}
public void setBlue(String blue) {
this.blue = blue;
}
public String getRed() {
return red;
}
public void setRed(String red) {
this.red = red;
}
public Greens getGreens() {
return greens;
}
public void setGreens(Greens greens) {
this.greens = greens;
}
@Override
public String toString() {
return "Colors{" + "blue=" + blue + ", red=" + red + ", greens=" + greens + '}';
}
}
public static class Greens {
private String lightGreen;
private String darkGreen;
//getters and setters
public String getLightGreen() {
return lightGreen;
}
public void setLightGreen(String lightGreen) {
this.lightGreen = lightGreen;
}
public String getDarkGreen() {
return darkGreen;
}
public void setDarkGreen(String darkGreen) {
this.darkGreen = darkGreen;
}
@Override
public String toString() {
return "Greens{" + "lightGreen=" + lightGreen + ", darkGreen=" + darkGreen + '}';
}
}
打印出您发布的内容:
Colors{blue=blue, red=red, greens=Greens{lightGreen=lightGreen, darkGreen=darkGreen}}
推荐阅读
- android - 程序在没有运行文本到语音的情况下跳到 Start 方法
- javascript - JavaScript:使用名称和默认值设置对象参数的正确方法
- docker - 如何让 cmake 只为 docker 构建可执行文件?
- react-native - 如何在带有 React Navigation 的 createBottomTabNavigator 中使用 AsyncStorage?
- javascript - 从 Spring Boot 转发到特定的 Angular 组件
- javascript - 在哪里验证函数的参数以及是否抛出或返回?
- html - 删除每个 div 元素的空格
- macos - `AXFocusedUIElement` <- 没有获得焦点元素(文件夹、文件),它指向 `Finder` 菜单
- java - 如何通过url重写在会话范围内发送参数?
- primeng - 组织结构图没有转义变量 - Angular 7