【问题标题】:Spring MVC 3.0 parsing item class in JSONSpring MVC 3.0 解析 JSON 中的项目类
【发布时间】:2010-11-09 09:39:30
【问题描述】:

我有一个名为 Person 的类,它看起来像这样。

public class Person{
public Person(){}

private Long id;
private String firstName;
private String lastName;
private Supervisor supervisor;

//setters and getters
}

public class Supervisor{
public Supervisor(){}
private Long id;
private String firstName;
private String lastName;

//setters and getters
}

现在我有一个 HTML 表单,其中包含人员和主管项目(名字、姓氏等)的输入 在服务器端,我有 Spring MVC 控制器,我正在执行以下操作:

 @RequestMapping(value="/getperson.do",method = RequestMethod.POST)
         @ResponseBody
          public String getPersonByAjax(@RequestBody Person person){ 

          }

我的超级用户会被解析为 Person 类中的项目吗?

我的 JSON 字符串应该是什么样子?

我可以使用 JQuery 实现它还是应该手动创建我的 JSON 字符串?

【问题讨论】:

  • 你的代码有错字SuperVisor应该是Supervisor for starters
  • 当然,我只是以文本形式输入了这段代码。谢谢。
  • 顺便说一句,您的“我的超级用户会被解析为个人项目吗?”应该是“我的主管会被解析为人员项目吗?”
  • @Bozho,还没有,因为我只是想知道 JSON 应该是什么样子。
  • @karianna - 对不起。我刚才描述错了。我可以把它归咎于我的立方体旁边的噪音:)

标签: java json jquery spring-mvc


【解决方案1】:

您的 JSON 消息应如下所示:

{
    "id": ...,
    "firstName": ...,
    "lastName": ...,
    "supervisor": {
        "id": ...,
        "firstName": ...,
        "lastName": ...    
    }
}

jQuery 无法自动将表单序列化为这种表示形式,因此您需要进行一些手动处理。

【讨论】:

  • 谢谢,这正是我想知道的。
【解决方案2】:

我想你可能希望你的主管扩展 Person?

或者甚至将 Person 更改为一个接口,让 Supervisor 实现该接口并添加一个新的 Employee 类来表示一个拥有 Supervisor 的 Person。

我会解析该结构,以便让您的 getPersonByAjax 接受所有类型的人员。

然后你就可以开始担心你的 JSON 了。

【讨论】:

  • 不,我不想这样做。 Person 和 Supervisor 是完全不同的实体。我想保持这种状态。
  • 在这种情况下,您将无法将 Supervisor 解析为 Person。它们在你的世界模型中完全不相关。
猜你喜欢
  • 2011-08-26
  • 2015-11-22
  • 2014-03-17
  • 2016-01-18
  • 2021-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-01
相关资源
最近更新 更多