对于下面的方法,JSONObject总是为空。
@RequestMapping(value = "/package/{id}", method = RequestMethod.PUT)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public SPackage updatePackage(@PathVariable String id, @RequestBody JSONObject
sPackage) {
}
我的ajax是这样的。我的方法得到的对象作为空地图在服务器端
var jsonObject= {"customerName":$('#customerName').val()}
var jsonData = JSON.stringify(jsonObject);
$.ajax({
type: "PUT",
url: "http://localhost:8081/someproj/package/" + $('#id').val(),
dataType: "json",
data: jsonData,
async: false,
contentType: "application/json; charset=utf-8",
beforeSend : function() {
openModal();
},
success: function(data) {
closeModal();
$('#success').show();
console.log(data);
}
});
您可以使用以下解决方法:
@RequestBody Map<String, String> json
这样,您可以继续使用Jackson HttpMessageConzer,并在有效载荷中处理自定义对象。
您可以在这里的答案中查看为什么会发生这种情况的扩展解释
@recestBody在发出POST请求时给出空的JsonObject
您确定Spring代码中没有出现异常吗。在Spring中将JSON转换为自定义对象时,需要指定具有相同字段的自定义类
在您的情况下,您可以这样定义POJO:
public class MyRequestObj {
private String customerName;
// add more fields for any other keys from JSON
}
并将其放入控制器类:
@RequestMapping(value = "/package/{id}", method = RequestMethod.PUT)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public SPackage updatePackage(@PathVariable String id, @RequestBody MyRequestObj
myRequestObj) {
String customerName = myRequestObj.getCustomerName();
}
当然,如果您只想将客户名称作为字符串传递给控制器,那么您还可以将其作为查询字符串(append?customerName=someCustomer)传递,并在Spring中检索它,如下所示:
@RequestMapping(value = "/package/{id}", method = RequestMethod.PUT)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public SPackage updatePackage(@PathVariable String id, @RequestParam("customerName") String customerName) {
}
我猜spring
不知道如何将json
转换为JSONObject
,最好是接受一个与json
结构相似的POJO对象,
@RequestMapping(value = "/package/{id}", method = RequestMethod.PUT)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public SPackage updatePackage(@PathVariable String id, @RequestBody YourJsonPOJO
sPackage) {
}
所以在我修复了'415媒体不支持'错误(415媒体不支持)之后,我遇到了一个新问题。我的请求体总是空的。当我通过ChromePostMan发送请求时,我总是得到一个只有空值的序列化实体。我正在使用,和。我在我的项目中使用基于注释的配置(使Spring自动发现)。 其他职位 我知道stackoverflow上的其他帖子,几乎有同样的问题。然而,他们没有给我一个答案。此外,大多数帖子都是针对较旧的Sp
我创建了一个简单的REST服务(POST)。但是当我从postman@RequestBody调用这个服务时,它没有收到任何值。 我的java Bean对象如下: System.out.println将null打印为PolcyNumber的值。 请帮我解决这个问题。 我在请求体中传递的JSON是 我甚至在postman中设置了到
我的应用程序中有一个接受日志的控制器。当我发送一个空的json对象(“{}”)或有效请求,但有一个或多个空字段时,它会自动反序列化为一个空的LogDTO对象或一个字段设置为0(对于数字字段)的LogDTO。我想拒绝字段为空的请求。 我的控制器: LogDTO对象: 我也尝试在我的应用程序属性中设置“spring.jackson.default-属性-包含=非默认”,但它一直将字段设置为“0”。有什
我在使用Discord。js和一个长时间运行的Discord bot最近由于消息而突然停止工作。成员对象始终为空。 例如: 这始终会产生:TypeError:无法读取null的属性“roles” 在我们查看消息的代码库中,这种错误也随处可见。成员 即使控制台完全记录消息对象,我们也可以肯定地看到成员属性为空。 Discord.js?有什么变化吗?
使用Spring Boot1.4和Spring Data Rest/MVC,我无法使@valid@requestbody工作。我已经尝试了多个版本的Hibernate验证器,声明验证器bean等。 MyPojo包含各种验证注释,例如@digits、@notnull等。当调用repostiory.save方法但Spring没有尝试对POJO进行任何验证时,我实际上看到了验证器异常。 更新 当试图将实
我们正在尝试建立springfox:swagger用户界面。但是,当使用值使用post方法创建restcontroller时。对于不可变接口,示例显示的是,模型显示的是接口名称,而不是其他名称。 我注意到,当我使用不可变类作为请求体时,示例显示了它的所有属性。我尝试在接口上添加子类型和父配置,但没有改变任何东西 这是我们不变的界面: 我们的映射: 我们的objectmapper: 我们的招摇过市配