推荐使用 jackson 库序列化 hashmap 为 json 字符串,因其性能好、兼容性强;gson 简单易用但对泛型和 null 处理需注意;键应统一为 string,值须可序列化,避免手动拼接 json。

用 Jackson 或 Gson 库是最常用、最可靠的方式,直接序列化 HashMap 对象即可生成标准 JSON 字符串。
使用 Jackson(推荐)
Jackson 是 Java 生态中主流的 JSON 处理库,性能好、兼容性强、默认行为合理。
- 添加 Maven 依赖(Jackson Databind):
- 代码示例(支持嵌套、泛型、null 值等):
HashMap
map.put("name", "Alice");
map.put("age", 30);
map.put("hobbies", Arrays.asList("reading", "swimming"));
try {
String json = mapper.writeValueAsString(map);
// 输出:{"name":"Alice","age":30,"hobbies":["reading","swimming"]}
} catch (JsonProcessingException e) {
e.printStackTrace();
}
使用 Gson
Google 开发的 Gson 简单易上手,适合轻量场景,对 null 和泛型处理需稍加注意。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
- Maven 依赖:
- 代码示例:
HashMap
map.put("city", "Beijing");
map.put("code", 100000);
String json = gson.toJson(map);
// 输出:{"city":"Beijing","code":100000}
注意事项
避免踩坑的关键点:
-
键必须是字符串:JSON 对象的 key 只能是 string 类型,HashMap 的 key 若为非 String(如 Integer),Jackson/Gson 会自动调用
toString()转换,但语义可能丢失;建议统一用String作 key。 -
值类型要可序列化:自定义对象需有 public getter 或无参构造器;含循环引用会报错,可用
@JsonManagedReference等注解处理。 - 中文乱码?:确保输出时指定 UTF-8 编码(Jackson 默认就是;Gson 也默认支持 Unicode,无需额外配置)。
-
不建议手动拼接:用字符串拼接模拟 JSON(如
"{\"" + k + "\":\"" + v + "\"}")极易出错,不支持嵌套、转义、特殊字符,且不安全。
简单验证是否成功
生成后可用在线工具(如 jsonlint.com)或 IDE 插件校验 JSON 格式是否合法;也可反向解析测试:
// Jackson 反解析验证Map










