Spring REST控制器映射JSON



想知道是否有人能帮我。我有一个JSON请求

{
"blue": "blue",
"red": "red",
"greens" : {
"lightGreen": "lightGreen",
"darkGreen": "darkGreen"
}
}

我想使用@RequestBody将其映射到pojo

这样做:

@PostMapping(path = "/colors", headers = "Accept=application/json")
public void generateClaimDocument(@Valid @RequestBody Colors colors) {
if (colors != null) {
service.doSomethingWithColors(colors);
}
}

这对蓝色和红色都很好,但它根本没有映射JSON绿色对象。以前从未这样做过,所以有人能告诉我如何做到这一点吗?

PoJo's:

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}}

最新更新