07fb74b68b67e4abefa81f316d494275518f4265
				
			
			
		
	Golang 运行时动态结构体
主要提供在运行时动态生成结构体的能力, 同时支持合并多个已有结构体,生成一个新的结构体
主要功能如下:
- 运行时动态生成结构体, 更灵活
- 运行时继承已有结构体的结构
- 运行时合并多个结构体
- 向结构体中新增字段
- 移除结构体中指定字段
- 修改已存在字段的类型以及Tag标签
- 读取动态结构体字段的Helper
- 动态结构体的值, 解析到一个已定义的结构体中
- 懂动态结构体生成slice或者map实例
使用示例
package main
import (
	"encoding/json"
	"fmt"
	"log"
	"git.zhangdeman.cn/zhangdeman/dynamic-struct"
)
func main() {
	instance := NewStruct().
		AddField("Integer", "", 0, `json:"int"`, false).
		AddField("Text", "", "", `json:"someText"`, false).
		AddField("Float", "", 0.0, `json:"double"`, false).
		AddField("Boolean", "", false, "", false).
		AddField("Slice", "", []int{}, "", false).
		AddField("Anonymous", "", "", `json:"-"`, false).
		Build().
		New()
	data := []byte(`
{
    "int": 123,
    "someText": "example",
    "double": 123.45,
    "Boolean": true,
    "Slice": [1, 2, 3],
    "Anonymous": "avoid to read"
}
`)
	err := json.Unmarshal(data, &instance)
	if err != nil {
		log.Fatal(err)
	}
	data, err = json.Marshal(instance)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(string(data))
	// Out:
	// {"int":123,"someText":"example","double":123.45,"Boolean":true,"Slice":[1,2,3]}
}
					Languages
				
				
								
								
									Go
								
								100%