在 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().
我在 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().