gpt4 book ai didi

java - 如何使用spring mvc将json反序列化为复杂对象?

转载 作者:行者123 更新时间:2023-12-01 04:15:19 25 4
gpt4 key购买 nike

假设我已将 JSON 发布到服务器,如下所示:

{
warFile: {name: "test1", dependencies: [test0, test2]},
param: {build: true, test: true}
}

我有以下 3 个类(class):

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(){...};
}

Controller 如下:

@RequestMapping(value = "/test.ajax", method = RequestMethod.POST)
public @ResponseBody
BuildResult buildWar(@RequestBody Command cmd) {
return logic.build(cmd.getWarFile(), cmd.getParam());
}

由于 Command 中的 warFileparam 不是原始类型,所以我总是收到以下错误:

The request sent by the client was syntactically incorrect.

如果Command中的所有属性都是原始类型,我确信没有任何问题。但是这个错误怎么会发生呢?我的意思是,这些对象很简单,不需要为它们编写自定义反序列化器。

最佳答案

“发送到客户端的请求在语法上不正确”意味着您发送的请求内容有问题,不一定是您的 Controller 或 Spring 配置有问题。首先,您的 JSON 无效。 Jackson 无法正确地将 JSON 映射到它应表示的对象。应该是:

{
"warFile": {
"name": "test1",
"dependencies": ["test0", "test2"]
},
"param": {
"build": true,
"test": true
}
}

其次,确保内容类型为application/json。最后,为什么您的 Command 对象有私有(private) getter/setter,而您的 setter 没有字段参数?

关于java - 如何使用spring mvc将json反序列化为复杂对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19508299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com