Map 是一种数据结构,即一种组织数据的方式;而 JSON 是一种规范。
Java 中 Map 和 JSON 数据是不一样的,即使看上去像。
{name=hobe, age=10} // Map打印出来的结果
{"name":"hobe", "age":"10"} //JSON格式
如上可以看出,至少 JSON 的 Key 是有双引号的字符串。
原生 Java 是不支持 JSON 的,需要借助第三方 JSON 框架将 Map 等数据结构转化为 JSON 数据,如 Jackson、Fastjson 等 JSON 框架。需要在项目文件中引入对应的依赖包。
Spring 框架搭建 Web 服务时,使用 RestController 注解,如下所示。
@RestController
public Map<String, String> fun() {
Map<String, String> res = new HashMap<>();
...
return res;
}
我们会发现即使函数 fun 返回值是 Map 数据,但是前端收到的响应依然是 JSON 数据,这是因为注解 @RestController 底层使用 Jackson 将 Map 封装成了 JSON数据。
Jackson、Fastjson 等 JSON 框架,其底层其实还是 HashMap。