如何在 Spring REST 中以 JSON 格式接收多个参数值和 return 数据?
How can I receive multiple parameter values and return data in JSON format in Spring REST?
我是 Spring 的新手,我正在使用 Spring MVC4。我必须接收所有请求,读取请求中的多个参数,最后应用基于参数的业务逻辑和 return JSON 格式的数据。
TestController.java:
@RequestMapping(value="/receiveUpdatedStressScore",params = { "value", "device_model"},method=RequestMethod.GET, produces={"application/json"})
public String receiveUpdatedStressScore(@RequestParam(value="value") int value,@RequestParam(value="device_model") String device_model)
{
return "Here: "+value+" device_model "+device_model;
}
URL: http://localhost:8080/appname/receiveUpdatedStressScore?value=100&device_model=nokia
但我得到的输出不在 Json 中。我在浏览器中的输出是..
这里: 100 device_model 诺基亚
如何转换成Json?
我认为你的解决方案是正确的。这就是我的工作方式(注意 @ResponseStatus
:
@ResponseStatus(HttpStatus.OK)
@RequestMapping(value = "/nearbyStudios", method = RequestMethod.GET, produces = { "application/json" })
public List<NearbyStudio> getNearbyStudios(Float latitude, Float longitude, Float radius) {
return mapDao.getNearbyStudios(latitude, longitude, radius);
}
如果这不起作用,您的问题可能出在其他地方。 Spring 会为您将结果转换为 JSON,只要您返回的内容实现 Serializable
.
你需要在方法前加上注解@ResponseBody returns 比如:
@RequestMapping(value="/receiveUpdatedStressScore",params = { "value", "device_model"},method=RequestMethod.GET, produces={"application/json"})
public @ResponseBody String receiveUpdatedStressScore(@RequestParam(value="value") int value,@RequestParam(value="device_model") String device_model){
return "Here: "+value+" device_model "+device_model;
}
还要确保在类路径中有 Jackson 库:类路径中的 jackson-core 和 jackson-databind
Json 是 JavaScript 对象 Notation.Which 应该是具体的 format.You 将在 link 下面的 json 中找到更多信息。
http://www.w3schools.com/json/
在您的情况下,returned 字符串应采用以下格式。
{
"value": "100",
"device_model": "nokia"
}
您可以在下面link验证您的json。
对于 Stefan Falk 的回答,此 produces = { "application/json" }
代码将 return json 特定模型 object.In 你的情况我没有看到任何模型对象。
您返回的字符串不会自动转换为 JSON。
做这样的事情(注意 @ResponseBody 并确保你有 Jackson 作为依赖):
@RequestMapping(value="/receiveUpdatedStressScore")
public @ResponseBody Device receiveUpdatedStressScore(@RequestParam(value="value") int value,@RequestParam(value="device_model") String deviceModel)
{
Device device = new Device();
device.setDeviceModel(deviceModel);
device.setValue(value);
return device;
}
public class Device {
int value;
String deviceModel;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public String getDeviceModel() {
return deviceModel;
}
public void setDeviceModel(String deviceModel) {
this.deviceModel = deviceModel;
}
}
我应用业务逻辑并返回模型而不仅仅是参数值本身后,我的问题就解决了。当我返回模型时,Jackson 采取了所有必要的措施将模型对象转换为 json.
这是我更新后的代码:
@RequestMapping(value="/receiveUpdatedStressScore",params = { "value", "device_model" },method=RequestMethod.GET,produces={"application/json"})
public StressScore receiveUpdatedStressScore(@RequestParam(value="value") Short value,@RequestParam(value="device_model") String device_model)
{
StressScore s=new StressScore();
s.setScore(value);
s.setDevice_model(device_model);
return s;
}
URL:
http://localhost:8080/appname/receiveUpdatedStressScore?value=100&device_model=nokia
在浏览器中输出:
{"device_model":"nokia","api_key":null,"time":0,"score":100}
非常感谢。
与其 return 字符串相比,return 用 @ResponseBody
注释的模型 bean 更好。这将确保响应格式正确 JSON
如下所示
@RequestMapping(value="/receiveUpdatedStressScore",params = { "value", "device_model"},method=RequestMethod.GET, produces={"application/json"})
public @ResponseBody MyBean receiveUpdatedStressScore(@RequestParam(value="value") int value,@RequestParam(value="device_model") String device_model)
{
MyBean mb= new MyBean();
mb.setValue(value);
mb.setDevice_model(device_model);
return mb;
}
你可以这样做:
在控制器上:
@RequestMapping(value="/receiveUpdatedStressScore",params = { "value",
"device_model"},method=RequestMethod.GET, produces={"application/json"})
public String receiveUpdatedStressScore(@RequestParam(value="value")
int value,@RequestParam(value="device_model") String device_model)
{
return "{Here: "+value+", device_model: "+device_model + "}";
}
在客户端:
function receiveUploadedStressScore(){
$http.get("/receiveUpdatedStressScore?value=100&device_model=nokia")
.success(function(data){
var jsonObj = $.parseJSON(data.content);
});
}
我是 Spring 的新手,我正在使用 Spring MVC4。我必须接收所有请求,读取请求中的多个参数,最后应用基于参数的业务逻辑和 return JSON 格式的数据。
TestController.java:
@RequestMapping(value="/receiveUpdatedStressScore",params = { "value", "device_model"},method=RequestMethod.GET, produces={"application/json"})
public String receiveUpdatedStressScore(@RequestParam(value="value") int value,@RequestParam(value="device_model") String device_model)
{
return "Here: "+value+" device_model "+device_model;
}
URL: http://localhost:8080/appname/receiveUpdatedStressScore?value=100&device_model=nokia
但我得到的输出不在 Json 中。我在浏览器中的输出是..
这里: 100 device_model 诺基亚
如何转换成Json?
我认为你的解决方案是正确的。这就是我的工作方式(注意 @ResponseStatus
:
@ResponseStatus(HttpStatus.OK)
@RequestMapping(value = "/nearbyStudios", method = RequestMethod.GET, produces = { "application/json" })
public List<NearbyStudio> getNearbyStudios(Float latitude, Float longitude, Float radius) {
return mapDao.getNearbyStudios(latitude, longitude, radius);
}
如果这不起作用,您的问题可能出在其他地方。 Spring 会为您将结果转换为 JSON,只要您返回的内容实现 Serializable
.
你需要在方法前加上注解@ResponseBody returns 比如:
@RequestMapping(value="/receiveUpdatedStressScore",params = { "value", "device_model"},method=RequestMethod.GET, produces={"application/json"})
public @ResponseBody String receiveUpdatedStressScore(@RequestParam(value="value") int value,@RequestParam(value="device_model") String device_model){
return "Here: "+value+" device_model "+device_model;
}
还要确保在类路径中有 Jackson 库:类路径中的 jackson-core 和 jackson-databind
Json 是 JavaScript 对象 Notation.Which 应该是具体的 format.You 将在 link 下面的 json 中找到更多信息。
http://www.w3schools.com/json/
在您的情况下,returned 字符串应采用以下格式。
{
"value": "100",
"device_model": "nokia"
}
您可以在下面link验证您的json。
对于 Stefan Falk 的回答,此 produces = { "application/json" }
代码将 return json 特定模型 object.In 你的情况我没有看到任何模型对象。
您返回的字符串不会自动转换为 JSON。 做这样的事情(注意 @ResponseBody 并确保你有 Jackson 作为依赖):
@RequestMapping(value="/receiveUpdatedStressScore")
public @ResponseBody Device receiveUpdatedStressScore(@RequestParam(value="value") int value,@RequestParam(value="device_model") String deviceModel)
{
Device device = new Device();
device.setDeviceModel(deviceModel);
device.setValue(value);
return device;
}
public class Device {
int value;
String deviceModel;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public String getDeviceModel() {
return deviceModel;
}
public void setDeviceModel(String deviceModel) {
this.deviceModel = deviceModel;
}
}
我应用业务逻辑并返回模型而不仅仅是参数值本身后,我的问题就解决了。当我返回模型时,Jackson 采取了所有必要的措施将模型对象转换为 json.
这是我更新后的代码:
@RequestMapping(value="/receiveUpdatedStressScore",params = { "value", "device_model" },method=RequestMethod.GET,produces={"application/json"})
public StressScore receiveUpdatedStressScore(@RequestParam(value="value") Short value,@RequestParam(value="device_model") String device_model)
{
StressScore s=new StressScore();
s.setScore(value);
s.setDevice_model(device_model);
return s;
}
URL: http://localhost:8080/appname/receiveUpdatedStressScore?value=100&device_model=nokia
在浏览器中输出:
{"device_model":"nokia","api_key":null,"time":0,"score":100}
非常感谢。
与其 return 字符串相比,return 用 @ResponseBody
注释的模型 bean 更好。这将确保响应格式正确 JSON
如下所示
@RequestMapping(value="/receiveUpdatedStressScore",params = { "value", "device_model"},method=RequestMethod.GET, produces={"application/json"})
public @ResponseBody MyBean receiveUpdatedStressScore(@RequestParam(value="value") int value,@RequestParam(value="device_model") String device_model)
{
MyBean mb= new MyBean();
mb.setValue(value);
mb.setDevice_model(device_model);
return mb;
}
你可以这样做:
在控制器上:
@RequestMapping(value="/receiveUpdatedStressScore",params = { "value",
"device_model"},method=RequestMethod.GET, produces={"application/json"})
public String receiveUpdatedStressScore(@RequestParam(value="value")
int value,@RequestParam(value="device_model") String device_model)
{
return "{Here: "+value+", device_model: "+device_model + "}";
}
在客户端:
function receiveUploadedStressScore(){
$http.get("/receiveUpdatedStressScore?value=100&device_model=nokia")
.success(function(data){
var jsonObj = $.parseJSON(data.content);
});
}