JSON 技能评估
核心用法
本技能聚焦 JSON 数据结构的标准化处理与 API 交互优化,覆盖从基础语法到工程实践的完整链路。核心场景包括:Schema 驱动开发(通过 additionalProperties: false 实现严格契约)、跨语言命名一致性(JavaScript 生态用 camelCase,Python/Ruby 用 snake_case)、时序数据标准化(强制 ISO 8601 UTC 格式)、高精度数值处理(大整数 ID 与货币用字符串避免浮点陷阱)。
API 设计层面强调结构化错误响应、请求 ID 追踪、资源回显等模式;序列化安全则涵盖原型污染防护、__proto__ 键过滤、循环引用检测及敏感数据脱敏。额外提供 Unicode 边界处理(emoji 代理对、BOM 剥离)等冷门但关键的工程细节。
显著优点
- 防御性设计导向:每个建议均针对生产事故(如 JS 大整数精度丢失、原型链污染攻击)给出可落地方案
- 多生态兼容:明确区分 JS/Python/Ruby 等语言的惯用法,避免"一刀切"式建议
- 安全内嵌:将序列化安全(XSS/原型污染防护)作为一等公民,而非附加章节
潜在局限
- 无具体库推荐:未绑定如 Ajv、zod、io-ts 等验证工具链,新手需自行调研
- 性能权衡留白:如"扁平化 3 层嵌套"未量化网络往返与查询复杂度的 trade-off
- GraphQL/Protobuf 缺席:纯 REST/JSON 视角,未涉及现代替代方案的对比
适合人群
- 全栈工程师规范团队 API 契约
- 后端开发者设计跨端兼容的数据层
- 安全工程师审计序列化攻击面
- 技术负责人制定代码审查 checklist
常规风险
| 风险类型 | 具体表现 | 缓解方案 |
|---------|---------|---------|
| 精度丢失 | `id: 9007199254740993` → `9007199254740992` | 强制字符串化大数值 |
| 原型污染 | `{"__proto__": {"isAdmin": true}}` | 用 `Object.create(null)` 或 schema 白名单 || 循环引用崩溃 | `JSON.stringify(objWithCycle)` 抛异常 | 前置检测或引入 `flatted` |
| 时区歧义 | `"2024-01-15T14:30:00"` 缺 `Z` 后缀 | lint 规则强制 UTC 标记 |
安全等级 S:无代码执行,纯静态配置/数据格式规范,攻击面无状态暴露。