比方说,我已经发布JSON服务器如下:如何使用spring mvc将json反序列化成复杂的对象?
{
warFile: {name: "test1", dependencies: [test0, test2]},
param: {build: true, test: true}
}
,我有3类如下:
public class WarFile{
private String name:
private String[] dependencies;
public void setName(){...};
public String getName(){...};
public void setDependencies(){...};
public String[] getDependencies(){...};
}
public class Param{
private boolean build;
private boolean test;
public void setBuild(){...};
public boolean isBuild(){...};
public void setTest(){...};
public boolean isTest(){...};
}
public class Command{
private WarFile warFile;
private Param param;
private void setWarFile(){...};
private WarFile getWarFile(){...};
private void setParam(){...};
private Param getParam(){...};
}
控制器如下:
@RequestMapping(value = "/test.ajax", method = RequestMethod.POST)
public @ResponseBody
BuildResult buildWar(@RequestBody Command cmd) {
return logic.build(cmd.getWarFile(), cmd.getParam());
}
而且,由于warFile
和param
in Command不是原始类型,我总是得到以下错误:
The request sent by the client was syntactically incorrect.
如果Command中的所有属性都是原始类型,我相信没有任何问题。但是这个错误是怎么发生的?我的意思是,这些对象很简单,不需要为它们编写自定义的解串器。
请显示您如何将JSON内容发布到服务器的代码。另外,你有没有在你的classpath上使用Jackson?你使用的是什么版本的Spring? – digitaljoel
邮政部分为其他请求正确工作,并且我进口杰克逊。事情是当我想要反序列化一个复杂的对象时出现错误。如果该对象只包含int,string,list ......的属性,则不会有任何问题。该过程正常工作。 – Howard