gsonformat插件用于将合法json字符串一键生成java实体类,支持嵌套、list及泛型推断;常见问题包括json非法、含动态key、单引号或bom头导致生成失败,需确保utf-8无bom编码、双引号格式,并手动补全@serializedname注解与类型适配。

GsonFormat 插件不是用来「格式化 JSON 字符串」的,它干的是另一件事:把 JSON 结构一键转成 Java 实体类(含嵌套、List、泛型推断)。如果你点开插件界面却只看到一堆乱码或生成失败,大概率是误把它当成了 JSON Formatter 类工具。
为什么粘贴 JSON 后点 OK 没反应或报错?
常见错误现象:java.lang.NullPointerException、空白弹窗、生成类里全是 Object 类型、字段名全变成 field1 field2
- JSON 字符串必须是**合法且完整**的——不能是片段(比如只复制了
{"name": "a"}但原结构其实是数组里的一个元素) - 不能带中文引号、全角符号、BOM 头;用 Notepad++ 或 VS Code 先检查编码是否为 UTF-8 无 BOM
- 如果 JSON 里有动态 key(如
"2024-08-12": {...}),GsonFormat无法识别为字段,会跳过或崩掉 - 插件不支持单引号,必须双引号 ——
{'name': 'a'}❌,{"name": "a"}✅
Alt+S 没反应?快捷键冲突或插件未激活
Mac 上常用 Option+S,Windows/Linux 是 Alt+S,但这个快捷键极易被其他插件(如 Save Actions、Key Promoter X)劫持
- 进
Settings → Keymap,搜索GsonFormat,确认绑定状态是否为 “Assigned” - 没绑定?右键菜单里选
Generate → GsonFormat是最稳的 fallback 方式 - 新建类后右键仍不显示该选项?检查类是否是
.java文件、是否在src/main/java下、且文件里不能有语法错误(比如缺分号导致解析器卡住)
生成的类里 List 泛型丢失,全成了 raw List?
这是 GsonFormat 的老毛病:对数组内对象类型推断弱,尤其当数组为空 [] 或只有一条数据时,容易把 dog 字段生成成 List<object></object>
- 手动在
Virgo Model窗口里,点击对应字段右侧的下拉箭头,从列表中选准具体内部类(如DogBean) - 如果字段名含下划线(如
user_name),默认生成的属性是userName,但反序列化时需加@SerializedName("user_name")注解 —— 插件不会自动加,得自己补 - 勾选
Use Lombok可省去 getter/setter,但前提是项目已引入 Lombok 依赖并开启注解处理
生成类后 Gson 解析仍失败?别漏了这几处
生成只是第一步,真正跑起来还要看运行时行为。常见 com.google.gson.JsonParseException 往往和这些有关:
-
Gson默认不处理 null 值字段,若 JSON 中某字段为null但 Java 类里是基本类型(如int count),直接炸 —— 改成包装类Integer count - 时间戳字段(如
"created_at": 1723456789000)会被识别为long,但业务可能需要Date或LocalDateTime,得手写TypeAdapter - 如果用了
fastjson的JSONObject.parseObject(str, Clazz.class),那GsonFormat生成的类并不保证兼容 —— 它只对Gson库友好
真正的坑不在生成那一刻,而在你第一次 gson.fromJson(jsonStr, Xxx.class) 报错时才发现:字段名对不上、类型推错了、null 处理没兜住。建议生成后立刻拿一小段真实 JSON 样本做反向解析验证,别等联调才踩。











