首页 > 解决方案 > 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
}

标签: javajsonspringrest

解决方案


使用您的代码我找不到任何问题。试过这个例子:

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


推荐阅读