json - Spring @ResponseBody 为原始类型生成无效的 JSON

标签 json spring rest jackson

我有一个来自 REST API 的代码,它使用 @ResponseBody返回结果,和一个 MappingJacksonHttpMessageConverter以 JSON 格式返回它。

对于复杂的对象,这一切都很好。
对于像 int 这样的原语, booleanstring我得到一个不以 { 或 [ 开头的 JSON。
这不是有效的 JSON。

我想知道返回这样的简单类型的正确方法是什么?
我应该将它封装在一个对象中,例如 { Result : true } ?

谢谢

代码示例:

@RequestMapping(
        value = "/login",
        method = RequestMethod.POST)
@ResponseBody
public boolean Login(String username, String password) {
    return authenticationService.authenticate(username, password);
}

这将仅返回 truefalse这是一个无效的 JSON。它应该封装在一个对象或一个数组中(如果我理解正确的话)。

最佳答案

它只返回真或假。你是对的,这不是 json。

它不能是 json,因为它不是一个对象,它只是一个原语,所以它原样很好 - 它将被分配给成功处理程序中的 javascript 变量。

如果你返回一个 bool 值列表,你会得到一个数组:

[true,false,true]

如果您必须具有完全形成的 json,请不要返回原语,请使用 hashmap 或自定义包装器对象。
public
@ResponseBody
Map<String, Boolean> getTrue() {
  Map<String, Boolean> map = new HashMap<String, Boolean>(1){{put("result", Boolean.TRUE);}};
  return map;
}

返回 hashmap 可能是获取所需 json 的最简单和最好的方法:
{"result":true}

关于json - Spring @ResponseBody 为原始类型生成无效的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12911069/

相关文章:

rest - application/* Content-Type 和 charset 属性

java - 为什么Springs自动生成的pom文件无法解析?

java - Spring MVC : Where to place validation and how to validation entity references

Java 8 LocalDate jackson 格式

java - 调用外部API并解析JSON对象

spring - 使用 Spring Security 在登录时记录用户代理信息

python - Django-rest-framework 教程获取特定片段时出现内部服务器错误

javascript - 新手-获取以太坊最新区 block 的API

ios - 将 TableView Controller 更改为 Collection View Controller

java - 如何使用 JsonCreator 反序列化具有重载构造函数的类