VSCode需安装quicktype的Paste JSON as Code扩展才能使用该功能;必须在.ts/.go等支持文件中右键触发,JSON须合法且光标位于可编辑区;字段名默认camelCase可配为original;Go结构体需手动大写首字母并添加json tag;嵌套不一致时生成interface{},应合并多例JSON提升准确性。

VSCode 本身不带 Paste JSON as Code 功能,必须装 Paste JSON as Code(作者 quicktype)扩展才能用;没装就右键找不到菜单,装了但不在支持的语言文件里也触发不了。
怎么确认功能已就绪并正确触发
装完扩展后别急着复制粘贴,先检查三个硬性条件:
- 当前编辑器打开的是
.ts、.go、.cs或.py等插件明确支持的语言文件(不是.json文件!很多人误在.json里右键,结果没选项) - 剪贴板里是合法 JSON:双引号、无尾逗号、无注释、无单引号——建议先粘到
jsonlint.com过一遍 - 光标落在代码编辑区(不能在注释里、字符串字面量里,也不能在只读文件中)
满足后,右键 → Paste JSON as Code → 选语言,生成即完成。不支持 Ctrl+V 直接触发,必须右键。
TypeScript interface 字段名被自动转 camelCase 怎么办
比如原始 JSON 是 {"user_name": "alice"},默认生成 userName: string。这不是错误,是 quicktype 的默认命名策略,但容易导致和后端字段对不上。
解决方法是改全局配置:
- 按
Ctrl+Shift+P打开命令面板 - 输入
Quicktype: Configure Paste Behavior - 把
style改成original(保留原始字段名)或PascalCase(适合 C#)
改完后所有新生成的 TS 类型都会用 user_name: string,不用每回手动修。
Go struct 生成后不能直接解析 JSON
插件生成的 Go 结构体默认字段小写、无 json tag,例如:
type RootObject struct {
user_name string `json:"user_name"`
}
这会导致 json.Unmarshal 失败——Go 要求导出字段(首字母大写)且显式声明 tag。
必须手动改两处:
- 字段名首字母大写:
user_name→UserName - 补全完整 tag:
UserName string `json:"user_name"`
如果字段可能为空,插件常生成 *string,但业务需要零值安全时,得改成 string + omitempty tag。
为什么嵌套对象生成的是 interface{} 而不是具体 struct
quicktype 遇到结构不一致的嵌套数据(比如数组里有的对象有 address 字段,有的没有;或同一字段有时是 string,有时是 object),为保安全会退化成 interface{}。
这不是 bug,是类型推断的保守策略。应对方式只有两个:
- 合并多个真实响应样本,拼成一个“最全 JSON”,再粘贴生成(比单条示例准确得多)
- 生成后手动把
interface{}替换为对应 struct 名,并确保该 struct 已定义
别指望一次生成就覆盖所有边界情况,尤其是带可选字段、联合类型或动态 key 的 API 响应——生成只是起点,人工校验和调整绕不开。


















