java - 嵌套对象的 Spring JSON 数据绑定(bind)不起作用

标签 java json spring data-binding

我有以下 Person 类包含另一个 Car

public class Person {
    private String name
    private Car car;        
    ... getter and setters
}

public class Car {
    private String manufacturer;
    ... getter and setters
}

在 Javascript 中,我执行以下操作:

person = new Object();
person.name = "Bob";

person.car = new Object();

car = person.car;

car.manufacturer = "Mercedes";

$.ajax({
    url: 'someurl.com',
    type: 'POST',
    data: person,
    dataType: 'json',
    ...
    complete: function() {
        ...
    }
});

使用自动绑定(bind)功能时出现以下错误:

功能:

public @ResponseBody Car validateCar( Car car, HttpServletRequest servletRequest){
        ...
}

错误:

org.springframework.beans.InvalidPropertyException: Invalid property 'car[manufacturer]' of bean class [com.example.Person]: Property referenced in indexed property path 'car[manufacturer]' is neither an array nor a List nor a Map; returned value was []

我必须做什么才能使映射工作?

顺便说一句:我的 POST 数据如下所示:

name: Bob
car[manufacturer]: Mercedes

字符串化为 JSON 它看起来如下(我测试了它但我没有将其字符串化)

{"name":"Bob",
 "car": {
  "manufacturer":"Mercedes"
 }
}

最佳答案

您似乎传入了 Car 哈希并试图将其自动绑定(bind)到 Person 对象。为此,您的哈希需要看起来像 person[car[manufacture]]]。尝试在 javascript 中传递您的 person 对象,然后将 car 对象从自动绑定(bind)的 person 对象中拉出。

关于java - 嵌套对象的 Spring JSON 数据绑定(bind)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12040400/

相关文章:

java - 在通常不呈现为标记的组件上设置的标记 id

java - 如何打包 Spring Boot 应用程序以作为另一个 Spring Boot 应用程序中的操作依赖项

json - 快速编码 : Is it possible to get dictionary key:values in order returned in json response?

java - 单元测试引发 : HsqlException user lacks privilege or object not found: ROWNUM

java - 以编程方式启用通知 channel

java - 如何修复/避免 java.io.IOException : Socket read failed?

java - 如何使用 Retrofit 解析嵌套/多个 Json 对象

json - JSON Patch规范的解释

java - 使用 Spring Rest Template + Spring Web MVC 上传多部分文件(多个文件)

java - GWTP Rest Dispatch 可以与 REST Spring 服务器后端一起使用吗?