在 Spring MVC 4 return 布尔值中是否可以作为 JSON?

Is it possible in Spring MVC 4 return Boolean as JSON?

我在 Controller 中有一个简单的方法

@RequestMapping("admin")
public @ResponseBody
Boolean admin() {
    Boolean success = true;
    return success;
}

作为回应,我想要 return { "success": true }

注释 @ResponseBody 表示响应将是 JSON。但现在在回复中我收到了 true。

请问还有其他方法可以解决吗?

或者我应该做类似

的事情
@RequestMapping("admin")
public @ResponseBody
Map<String, Boolean> admin() {
    Map<String, Boolean> success = new TreeMap<String, Boolean>();
    success.put("success", true);
    return success;
}

我想知道这方面的最佳实践。

不可能。变量名 'success' 丢失。使用地图或创建一个小包装器 class。

public class BooleanResult {
    public boolean success;
}

您不能 return 原始类型(或原始包装类型)并获得 JSON 对象作为响应。您必须 return 一些对象,例如 Map 或自定义域对象。

您问题中显示的地图方法完全有效。如果你愿意,你可以使用 Collections.singletonMap().

将它压缩成一个漂亮的单行
@RequestMapping
@ResponseBody
public Map<String, Boolean> admin() {
    return Collections.singletonMap("success", true);
}

您不能 return 布尔值,但是,请考虑使用 ResponseEntities 并使用 HTTP 状态代码来表示成功。

public ResponseEntity<String> admin() {
    if (isAdmin()) {
        return new ResponseEntity<String>(HttpStatus.OK);
    } else {
        return new ResponseEntity<String>(HttpStatus.FORBIDDEN);            
    }
}

此方法会return一个空文件,但是你可以控制状态码(FORBIDDEN只是一个例子,你可以选择更合适的状态码,例如NOT FOUND?)

我正在使用 jsonobject 来执行此操作。

return new JSONObject().put("result",true).toString().