使用Map返回JSON

时间:2016-11-16 10:11:24

标签: json rest hashmap

我有一个方法,将状态从“活动”更改为“非活动”和副

反之,记录,通过获取它的id。

现在,我想转换它返回一个ResponseEntity对象,在其中,我有一个存储的地图

当我测试我的方法时,我得到 400:错误请求

//////////////////////// 旧方法 ////////////// //

@RequestMapping("toggleStatus")
    public @ResponseBody void toggleStatus(@RequestParam("resourceId") Long resourceId ){
        ResourceElementMaster resourceElementMaster = resourceElementService.findById(resourceId);
        if(resourceElementMaster.getIsActive() == true) {
            resourceElementMaster.setIsActive(false);
        } else {
            resourceElementMaster.setIsActive(true);
        }
        resourceElementService.update(resourceElementMaster);
    }

////////////////////// 新方法 //////////////// /////////////

@RequestMapping(value="toggleStatus",method=RequestMethod.PUT)
    public @ResponseBody ResponseEntity<Map<String, Object>> toggleStatus(@RequestBody Long resourceId ){
        Map<String, Object> mapToggle=new HashMap<String, Object>();
        ResourceElementMaster resourceElementMaster = resourceElementService.findById(resourceId);
        if(resourceElementMaster.getIsActive() == true) {
            resourceElementMaster.setIsActive(false);
        } else {
            resourceElementMaster.setIsActive(true);
        }
        mapToggle.put("Update",resourceElementService.update(resourceElementMaster));
        return new ResponseEntity<Map<String, Object>>(mapToggle, HttpStatus.OK) ;
    }

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

问题是,您尝试将Label1.Text = System.DateTime.Today.Day.ToString();传递给json方法。但是,/toggleStatus仅接受@ControllerresourceId

所以你通过Postman的回答应该是这样的:

PUT Long

此外,您的案例中不需要http://localhost:8080/toggleStatus?resouceId=42。像这样修改你的RequestEntity

@controller

答案 1 :(得分:0)

不要传递json,你只需要传递resourceId,你接受它作为方法toggleStatus中的参数。

另外,使用@RequestParam而不是@RequestBody:

@RequestMapping(value="toggleStatus",method=RequestMethod.POST)
public @ResponseBody ResponseEntity<Map<String, Object>> toggleStatus(@RequestParam(value = "resourceId") Long resourceId ){
    Map<String, Object> mapToggle=new HashMap<String, Object>();
    ResourceElementMaster resourceElementMaster = resourceElementService.findById(resourceId);
    if(resourceElementMaster.getIsActive() == true) {
        resourceElementMaster.setIsActive(false);
    } else {
        resourceElementMaster.setIsActive(true);
    }
    mapToggle.put("Update",resourceElementService.update(resourceElementMaster));
    return new ResponseEntity<Map<String, Object>>(mapToggle, HttpStatus.OK) ;
}