核心答案:CSV 字段含逗号、双引号或换行时必须整体包裹双引号(内部双引号写两个);命名风格转换的通用算法是「先拆词、再重组」——camelCase 按大写拆、snake_case 按下划线拆;URL slug 规范=全小写+连字符分隔+NFKD 去重音。
CSV 与 JSON 互转规则
RFC 4180 的三条核心规则:
- 字段含逗号 → 整体加双引号:
"北京, 朝阳区" - 字段含双引号 → 双引号变两个:
"他说""你好""" - 字段含换行 → 整体加双引号,换行保留在引号内
| CSV 原文 | JSON 结果 |
|---|---|
name,age + 张三,28 | [{"name":"张三","age":"28"}] |
"北京,朝阳" | 一个字段「北京,朝阳」 |
"他说""嗨""" | 一个字段「他说"嗨"」 |
注意 CSV 所有值默认是字符串——age 的 28 是 "28",转 JSON 后要数字需自行 parse。
命名风格九种对照表
以「用户登录次数」为例:
| 风格 | 写法 | 典型场景 |
|---|---|---|
| camelCase | userLoginCount | JS/Java 变量 |
| PascalCase | UserLoginCount | 类名/组件名 |
| snake_case | user_login_count | Python/数据库列 |
| SCREAMING_SNAKE | USER_LOGIN_COUNT | 常量/环境变量 |
| kebab-case | user-login-count | URL/CSS 类名 |
| dot.case | user.login.count | 配置文件键 |
| flatcase | userlogincount | Go 包内私有 |
| Title Case | User Login Count | 标题 |
| Train-Case | User-Login-Count | HTTP 头 |
转换算法:第一步统一拆词(camelCase 按大写边界、snake/kebab 按分隔符、空格按空白),得到词数组;第二步按目标风格规则重组(首词大小写、分隔符、各词首字母)。
URL slug 生成规范
好 slug 的四条标准:
- 全小写:
/Best-Practices与/best-practices在部分服务器是两个地址 - 连字符分隔:Google 官方推荐
-而非_(下划线会被连成一词) - 去重音符号:
café→cafe(NFKD 规范化后去掉组合符) - 去停用词:「的/了/and/the」等虚词删掉,slug 更短
中文标题两种路线:保留汉字(/文章/标题,现代浏览器与搜索引擎均支持)或转拼音/英文。用 [Slug 生成器](/c/dev/slugify) 可选保留中文模式。
实例:含逗号换行的 CSV 转换
原始 CSV:
```
name,address,note
"李四","北京市, 朝阳区","第一行
第二行"
```
转换结果:
```json
[{"name":"李四","address":"北京市, 朝阳区","note":"第一行\n第二行"}]
```
address 的逗号与 note 的换行都因外层双引号被正确保留在字段内。用 [CSV↔JSON 转换器](/c/dev/csv-json) 粘贴即转,行列数不一致会给出警告。
实例:文章标题生成 slug
标题:2024 年前端趋势:React、Vue 与 Svelte 的选择!
- 转小写 →
2024 年前端趋势:react、vue 与 svelte 的选择! - 去标点 →
2024 年前端趋势 react vue 与 svelte 的选择 - 去停用词(与/的)→
2024 年前端趋势 react vue svelte 选择 - 空格转连字符 →
2024-前端趋势-react-vue-svelte-选择
英文同理:“What’s New in ES2024?” → whats-new-in-es2024(撇号直接删除不转连字符)。
常见误区
- 用 split(",") 解析 CSV:遇到字段内逗号立即碎裂。CSV 必须用状态机逐字符解析(跟踪「是否在引号内」),或直接用现成解析器。
- JSON 里写单引号/尾逗号:JSON 只认双引号,且最后一个元素后不能有逗号,注释也不合法——从 JS 对象复制过来必炸。
- slug 里堆关键词:
best-cheap-top-2024-review这种被 Google 视为垃圾信号,3-5 个实词最佳。 - camel→snake 忘处理连续大写:
XMLHttpRequest拆词应为xml_http_request而非x_m_l_http_request——连续大写序列要整体识别。