gpt4 book ai didi

java - JSON 发布到 Spring Controller

转载 作者:IT老高 更新时间:2023-10-28 13:48:03 25 4
gpt4 key购买 nike

您好,我从 Spring 中的 Web 服务开始,所以我正在尝试在 Spring + JSON + Hibernate 中开发小型应用程序。我对 HTTP-POST 有一些问题。我创建了一个方法:

@RequestMapping(value="/workers/addNewWorker", method = RequestMethod.POST, produces = "application/json", consumes = "application/json")
@ResponseBody
public String addNewWorker(@RequestBody Test test) throws Exception {
String name = test.name;
return name;
}

我的模型测试看起来像:

public class Test implements Serializable {

private static final long serialVersionUID = -1764970284520387975L;
public String name;

public Test() {
}
}

通过 POSTMAN,我发送的只是 JSON {"name":"testName"},但总是出错;

The server refused this request because the request entity is in a format not supported by the requested resource for the requested method.

我导入了 Jackson 库。我的 GET 方法工作正常。我不知道我做错了什么。我很感激任何建议。

最佳答案

使用

将您的 JSON 对象转换为 JSON 字符串

JSON.stringify({"name":"testName"})

或手动。 @RequestBody 需要 json 字符串而不是 json 对象。

注意:stringify 函数在某些 IE 版本上存在问题,firefox 可以工作

验证 POST 请求的 ajax 请求的语法。 processData:false ajax 请求中需要属性

$.ajax({ 
url:urlName,
type:"POST",
contentType: "application/json; charset=utf-8",
data: jsonString, //Stringified Json Object
async: false, //Cross-domain requests and dataType: "jsonp" requests do not support synchronous operation
cache: false, //This will force requested pages not to be cached by the browser
processData:false, //To avoid making query String instead of JSON
success: function(resposeJsonObject){
// Success Action
}
});

Controller

@RequestMapping(value = urlPattern , method = RequestMethod.POST)

public @ResponseBody Test addNewWorker(@RequestBody Test jsonString) {

//do business logic
return test;
}

@RequestBody - 将 Json 对象转换为 java

@ResponseBody - 将 Java 对象转换为 json

关于java - JSON 发布到 Spring Controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18550418/

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