@RequestBody 未将 JSON 映射到 Java 对象 - Spring Boot

Com*_* v2 5 java mapping json spring-boot spring-restcontroller

我无法将我的 JSON 从帖子的方法体转换为我的 POJO,@RequestBody在我的控制器类中。

我调试了错误,我看到某些字段被映射而其他字段没有。像这样(POJO)

name: null, typeOfPlan: null, Email: example@gmail.com, PhoneNum: 123456789, Website: test.org, Username: null, password: 1234,这很奇怪。

JSON:

{
    "confirmPassword": "1234",
    "email": "example@gmail.com",
    "password": "1234",
    "phoneNum": "123456789",
    "name": "Hello world",
    "typeOfPlan": "Test",
    "userName": "user",
    "website": "test.org"
}
Run Code Online (Sandbox Code Playgroud)

控制器

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class SomeController {

    @Autowired
    private Service foo;

    @CrossOrigin
    @PostMapping(value = "/create")
    private void createAccount(@RequestBody BigFoo bigFoo) {
        foo.createAccount(bigFoo);
    }
}
Run Code Online (Sandbox Code Playgroud)

从这里,我调用我的服务,然后调用 DAO 类。

POJO

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Getter
@Setter
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class BigFoo {

    private String name;
    private String typeOfPlan;
    private String email;
    private String website;
    private String phoneNum;
    private String username;
    private String password;
}
Run Code Online (Sandbox Code Playgroud)

我也试图让使用JSONconsumes media type@PostMapping,但它没有它解决这个问题。

使用 Jackson ObjectMapper 效果不佳。

Com*_* v2 2

我的问题很简单:我的 Angular 项目中将数据发送到 Spring Boot 应用程序的变量拼写错误,因此无法被我的后端应用程序识别,因此无法正确映射到我的 POJO。


在我更改前端表单变量以匹配 POJO 的变量后,我得到了以下结果:

POJO数据

name: It's good now, typeOfPlan: 2 Year, Email: example@gmail.com, PhoneNum: 123456789, Website: test.org, Username: Master, password: 1234

Spring Boot 无法从 JSON 映射name, typeOfPlan& ,Username因为它们与我后端中的不匹配。


Name, typeOfPlan, userName

name, type, username

谢谢大家!