English | 中文
A Go library providing JSON operations and deep copy utilities.
go get github.com/felix-186/jsonStandard library compatible JSON functions:
import "github.com/felix-186/json"
// Encoding
data, err := json.Marshal(obj)
data, err := json.MarshalIndent(obj, "", " ")
str := json.MarshalToString(obj) // Returns string directly
// Decoding
err := json.Unmarshal(data, &obj)
// Streaming
decoder := json.NewDecoder(reader)
encoder := json.NewEncoder(writer)src := map[string]int{"a": 1, "b": 2}
var dst map[string]int
err := json.CopyByJson(&dst, src)Uses github.com/jinzhu/copier for struct field copying:
type User struct {
Name string
Age int
}
src := User{Name: "Alice", Age: 30}
var dst User
err := json.Copy(&dst, src)type Config struct {
Host string `mapstructure:"host"`
Port int `mapstructure:"port"`
}
src := map[string]interface{}{"host": "localhost", "port": 8080}
var dst Config
err := json.MapToStruct(&dst, src)src := map[string]interface{}{"a": 1}
dst := json.MapCopy(src) // Shallow copy, nested maps share referencesRecursively deep copies map, supporting nested maps, slices, pointers, and structs:
src := map[string]interface{}{
"a": 1,
"b": map[string]interface{}{"c": 2},
"d": []int{1, 2, 3},
}
dst := json.DeepCopyMap(src) // Completely independent copy
dst["b"].(map[string]interface{})["c"] = 999 // Does not affect src// Deep copy slice
newSlice := json.DeepCopySlice(slice)
// Deep copy pointer
newPtr := json.DeepCopyPointer(ptr)
// Deep copy struct
newStruct := json.DeepCopyStruct(structure)
// Deep copy via gob encoding
err := json.DeepCopyGob(src, &dst)| Function | Description |
|---|---|
Marshal |
JSON encode to bytes |
Unmarshal |
JSON decode from bytes |
MarshalIndent |
JSON encode with indentation |
MarshalToString |
JSON encode to string |
NewDecoder |
Create JSON decoder |
NewEncoder |
Create JSON encoder |
CopyByJson |
Deep copy via JSON serialization |
Copy |
Struct field copy using copier |
MapToStruct |
Convert map to struct |
MapCopy |
Shallow copy a map |
DeepCopyMap |
Deep copy a map recursively |
DeepCopySlice |
Deep copy a slice |
DeepCopyPointer |
Deep copy a pointer |
DeepCopyStruct |
Deep copy a struct |
DeepCopyGob |
Deep copy via gob encoding |
encoding/json- Standard JSON encoding/decodinggithub.com/json-iterator/go- High-performance JSON librarygithub.com/jinzhu/copier- Struct copyinggithub.com/mitchellh/mapstructure- Map to struct conversion
Go JSON 工具库,提供 JSON 操作和对象深拷贝功能。
go get github.com/felix-186/json标准库兼容的 JSON 操作函数:
import "github.com/felix-186/json"
// 编码
data, err := json.Marshal(obj)
data, err := json.MarshalIndent(obj, "", " ")
str := json.MarshalToString(obj) // 直接返回字符串
// 解码
err := json.Unmarshal(data, &obj)
// 流式操作
decoder := json.NewDecoder(reader)
encoder := json.NewEncoder(writer)src := map[string]int{"a": 1, "b": 2}
var dst map[string]int
err := json.CopyByJson(&dst, src)使用 github.com/jinzhu/copier 进行结构体字段复制:
type User struct {
Name string
Age int
}
src := User{Name: "Alice", Age: 30}
var dst User
err := json.Copy(&dst, src)type Config struct {
Host string `mapstructure:"host"`
Port int `mapstructure:"port"`
}
src := map[string]interface{}{"host": "localhost", "port": 8080}
var dst Config
err := json.MapToStruct(&dst, src)src := map[string]interface{}{"a": 1}
dst := json.MapCopy(src) // 浅拷贝,嵌套 map 会共享引用递归深拷贝 map,支持嵌套 map、slice、指针和结构体:
src := map[string]interface{}{
"a": 1,
"b": map[string]interface{}{"c": 2},
"d": []int{1, 2, 3},
}
dst := json.DeepCopyMap(src) // 完全独立副本
dst["b"].(map[string]interface{})["c"] = 999 // 不影响 src// 深拷贝 slice
newSlice := json.DeepCopySlice(slice)
// 深拷贝指针
newPtr := json.DeepCopyPointer(ptr)
// 深拷贝结构体
newStruct := json.DeepCopyStruct(structure)
// 通过 gob 编码进行深拷贝
err := json.DeepCopyGob(src, &dst)| 函数 | 说明 |
|---|---|
Marshal |
JSON 编码为字节 |
Unmarshal |
JSON 解码 |
MarshalIndent |
JSON 编码(带缩进) |
MarshalToString |
JSON 编码为字符串 |
NewDecoder |
创建 JSON 解码器 |
NewEncoder |
创建 JSON 编码器 |
CopyByJson |
通过 JSON 序列化深拷贝 |
Copy |
结构体字段复制 |
MapToStruct |
Map 转 Struct |
MapCopy |
Map 浅拷贝 |
DeepCopyMap |
Map 深拷贝 |
DeepCopySlice |
Slice 深拷贝 |
DeepCopyPointer |
指针深拷贝 |
DeepCopyStruct |
结构体深拷贝 |
DeepCopyGob |
通过 gob 编码深拷贝 |
encoding/json- 标准 JSON 编解码github.com/json-iterator/go- 高性能 JSON 库github.com/jinzhu/copier- 结构体复制github.com/mitchellh/mapstructure- Map 转 Struct