StringJoiner不推荐用于生成合法JSON,仅适合组装带括号和逗号的易读调试日志;需手动加“[”“]”,并对元素做基础转义(如双引号、换行符)以避免日志乱码。

直接用 StringJoiner 拼 JSON 日志不推荐——它不处理转义、不校验结构、也不支持嵌套,容易产出非法 JSON。但若只是简单打印调试日志(非真正 JSON 输出),且需带括号 + 逗号分隔,StringJoiner 确实能快速组装格式清晰的字符串。
明确目标:组装形如 "[a, b, c]" 的调试日志
这不是生成可解析的 JSON,而是让日志易读、有结构感。关键点是:开头加 [,结尾加 ],元素间用 , 分隔,每个元素建议做基本字符串转义(如双引号、换行符)。
注意:StringJoiner 本身不加中括号,需手动拼接;它也不自动转义,需自行处理特殊字符。
基础用法:括号包裹 + 逗号分隔
创建 StringJoiner 时传入分隔符 ", ",再用 toString() 后手动包上 [ 和 ]:
StringJoiner sj = new StringJoiner(", ");
sj.add("apple");
sj.add("banana");
sj.add("cherry");
String log = "[" + sj.toString() + "]"; // → "[apple, banana, cherry]"
安全增强:对字符串元素做最小 JSON 转义
避免日志中出现未闭合引号或乱码,对每个待添加的字符串做简单转义(仅处理双引号、反斜杠、换行、回车):
将后端 Java 接口文档转换为前端 TypeScript 类型定义(interface / type)。输入:飞书文档、Spring Boot 接口文档、Swagger/OpenAPI、手写 API 文档等。输出:包含请求参数与响应结果的 .md 文件,含完整 JSDoc 注释。触发关键词:Java 转 TS、接口转换、生成前端类型、接口文档转 TypeScript、DTO/VO/BO 转 interface、后端文档转前端类型、生成接口类型、类型定义生成。
- 用
String.replace()替换"→""" - 替换
→"\\" - 替换
→"\n" - 替换
→"\r"
再把转义后的字符串加入 StringJoiner:
String escapeForLog(String s) {
if (s == null) return "null";
return s.replace("\", "\\")
.replace(""", "\"")
.replace("
", "\n")
.replace("
", "\r");
}
StringJoiner sj = new StringJoiner(", ");
sj.add(escapeForLog("He said "Hello""));
sj.add(escapeForLog("Line1
Line2"));
String log = "[" + sj.toString() + "]";
// → "[He said "Hello", Line1\nLine2]"
进阶技巧:一行封装成工具方法
把逻辑收拢,提高复用性:
static String jsonLikeLog(String... items) {
StringJoiner sj = new StringJoiner(", ");
for (String item : items) {
sj.add(item == null ? "null" : escapeForLog(item));
}
return "[" + sj.toString() + "]";
}
// 使用
System.out.println(jsonLikeLog("user-123", "login", "2024-05-20"));
// → "[user-123, login, 2024-05-20]"
如果真要输出合法 JSON,应改用 Jackson、Gson 或 org.json 等库;但仅作控制台/文件调试日志,这样轻量组装既快又清晰。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










