java - Spring MVC 中的 JSON 到 Java 对象映射结果 400(错误请求)

标签 java json spring angularjs spring-mvc

提交表单时收到 400(错误请求)错误。我正在使用 Jackson API jackson-core-asl-1.9.10.jar 和 jackson-mapper-asl-1.9.10.jar。

我能够接收 JSON,但无法提交。

myscript.js

var app = angular.module('project', ['ngRoute']);
app.controller('projectFormCtrl',["$scope", "$http", function($scope, $http) {

    $scope.submitProject = function() {
        console.log($scope.project); //Works fine
        $http.post('saveProject',$scope.project).success(function () {
            console.log($scope.project);
        });
    };

}]);

WebController.java

@RequestMapping(value="/saveProject", method=RequestMethod.POST)
public @ResponseBody ProjectDetails submitProject(@RequestBody ProjectDetails projectDetails) {
    System.out.println(projectDetails);
    return projectDetails;
}

最佳答案

我也遇到了同样的问题错误请求。我通过执行以下代码解决了这个问题。
您可以通过 JSON.stringify(array) 将数组转换为 json 字符串,将数组发布到 Controller 。
我已使用 push() 将多个对象推送到数组中。

    var a = [];
    for(var i = 1; i<10; i++){
        var obj = new Object();
        obj.name = $("#firstName_"+i).val();
        obj.surname = $("#lastName_"+i).val();
        a.push(obj);
    }

    var myarray = JSON.stringify(a);
    $.post("/ems-web/saveCust/savecustomers",{myarray : myarray},function(e) {

    }, "json");

Controller :
您可以使用jackson来处理json字符串。
Jackson 是一个高性能 JSON 处理器 Java 库。

    @RequestMapping(value = "/savecustomers", method = RequestMethod.POST)
    public ServiceResponse<String> saveCustomers(ModelMap model, @RequestParam String myarray) {

        try{
            ObjectMapper objectMapper = new ObjectMapper().configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); 
            List<DtoToMAP> parsedCustomerList = objectMapper.readValue(myarray, new TypeReference<List<DtoToMAP>>() { });
            System.out.println(" parsedCustomerList :: " + parsedCustomerList);
        }catch (Exception e) {  
            System.out.println(e);
        }
    }

注意:确保您的 dto 应包含与使用数组对象发布的变量名称相同的变量名称。
就我而言,我的 dto 包含firstName,lastName,因为我使用数组对象进行发布。

jackson 依赖:

    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-core-asl</artifactId>
        <version>1.9.3</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.3</version>
    </dependency>

关于java - Spring MVC 中的 JSON 到 Java 对象映射结果 400(错误请求),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20066124/

相关文章:

java - 我可以将手动实例化与 Autowiring 结合起来吗?

java - 为什么增加线程数没有用?

javascript - getJSON 不显示文件路径

spring - 是否可以使用 Spring/Tomcat/Intellij 进行实时更改反馈?

javascript - 在 AngularJS 中使用 underscore.js 合并两个数组

jquery - 使用 JSON 文件禁用 JQuery UI-Datepicker 中的日期

java - Spring 与 EJB。 Spring可以替代EJB吗?

java - Hibernate 在 cfg.buildSessionFactory() 处突然挂起

java - 使用 crontab 运行简单的 Java 类文件

java - 有没有类似 j2me 的 python 解析器之类的东西?