JSON转Golang Struct
使用结构体
复制成功
结构体切片完整示例(可直接运行)
package main
import (
"encoding/json"
"fmt"
)
type JSONData struct {
Name string `json:"name"`
Code int `json:"code"`
List []List `json:"list"`
}
type List struct {
Day int `json:"day"`
}
func main() {
var jsonData JSONData
// 切片追加结构体元素
jsonData.List = append(jsonData.List, List{1})
jsonData.List = append(jsonData.List, List{2})
// 合并基础结构体赋值
respJson := JSONData{
Code: 1,
Name: "小芳",
List: jsonData.List,
}
// 追加新元素
respJson.List = append(respJson.List, List{3})
b, err := json.Marshal(respJson)
if err != nil {
fmt.Println("JSON ERR:", err)
return
}
fmt.Println("输出JSON字符串:")
fmt.Println(string(b))
// 输出结果:{"name":"小芳","code":1,"list":[{"day":1},{"day":2},{"day":3}]}
}
复制成功
一、工具功能说明
- 解析JSON自动生成Golang type结构体,自动添加`json:"字段名"`标签;
- 两种转换模式:无嵌套扁平结构体、标准嵌套结构体(适配数组嵌套对象);
- 自动识别类型:string字符串、int数字、bool布尔、数组切片、嵌套对象;
- 自动生成完整可运行main包代码,包含encoding/json导入、初始化变量;
- 内置结构体切片追加、合并完整运行示例,直接复制使用;
- 一键复制结构体代码 / 完整Go源码 / 追加示例代码,复制成功绿色提示;
- 纯前端JS解析,无需后端,离线本地使用,适用于Go接口开发、JSON绑定结构体。
二、截图默认实例演示
输入JSON
{"name":"小芳","code":404,"list":[{"day":1},{"day":2}]}
点击【转嵌套】生成结构体(右侧结果)
type JSONData struct {
Name string `json:"name"`
Code int `json:"code"`
List []List `json:"list"`
}
type List struct {
Day int `json:"day"`
}
结构体追加逻辑说明
// 1. nil切片直接追加子结构体
jsonData.List = append(jsonData.List, List{1})
// 2. 合并完整结构体赋值
respJson := JSONData{Name:"小芳",Code:1,List:jsonData.List}
// 3. 继续追加新元素
respJson.List = append(respJson.List, List{3})
// 4. 输出序列化JSON
{"name":"小芳","code":1,"list":[{"day":1},{"day":2},{"day":3}]}
三、操作步骤
- 左侧文本框粘贴接口返回JSON字符串;
- 选择转换模式:【转无嵌套】扁平化所有层级 / 【转嵌套】生成分层结构体;
- 右侧输出各层级type结构体定义;底部输出完整main包代码;
- 下方内置「结构体切片追加示例」可直接复制,用于数组合并、追加元素;
- 点击复制按钮,复制结构体/完整源码/追加示例到项目使用。
四、类型自动映射规则
- JSON字符串 → Go string
- JSON数字整数 → Go int
- JSON小数 → Go float64
- JSON布尔true/false → Go bool
- JSON数组 []{}嵌套对象 → Go []结构体
五、结构体追加核心语法
- 单元素追加:`obj.List = append(obj.List, List{Day:1})`
- 批量切片合并:`obj.List = append(obj.List, otherList...)`
- 结构体整体合并覆盖:`newObj = oldObj`
- 增量合并(仅更新非空字段):单独判断字段赋值,不覆盖原值