1
0
mirror of https://github.com/duke-git/lancet.git synced 2026-02-08 06:32:28 +08:00

feat: add MapToStruct

This commit is contained in:
dudaodong
2024-02-23 10:29:46 +08:00
parent 97ea636e9e
commit 48519aba2b
5 changed files with 231 additions and 44 deletions

View File

@@ -33,6 +33,7 @@ import (
- [ToJson](#ToJson)
- [ToString](#ToString)
- [StructToMap](#StructToMap)
- [MapToStruct](#MapToStruct)
- [EncodeByte](#EncodeByte)
- [DecodeByte](#DecodeByte)
- [DeepClone](#DeepClone)
@@ -40,6 +41,7 @@ import (
- [ToInterface](#ToInterface)
- [Utf8ToGbk](#Utf8ToGbk)
- [GbkToUtf8](#GbkToUtf8)
- [GbkToUtf8](#GbkToUtf8)
<div STYLE="page-break-after: always;"></div>
@@ -356,7 +358,7 @@ func main() {
### <span id="StructToMap">StructToMap</span>
<p>Convert struct to map, only convert exported field, struct field tag `json` should be set.</p>
<p>Converts struct to map, only convert exported field, struct field tag `json` should be set.</p>
<b>Signature:</b>
@@ -389,6 +391,59 @@ func main() {
}
```
### <span id="MapToStruct">MapToStruct</span>
<p>Converts map to struct, only convert exported field, struct field tag `json` should be set.</p>
<b>Signature:</b>
```go
func MapToStruct(m map[string]interface{}, structObj interface{}) error
```
<b>Example:</b>
```go
package main
import (
"fmt"
"github.com/duke-git/lancet/convertor"
)
func main() {
type Address struct {
Street string `json:"street"`
Number int `json:"number"`
}
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Phone string `json:"phone"`
Addr *Address `json:"address"`
}
m := map[string]interface{}{
"name": "Nothin",
"age": 28,
"phone": "123456789",
"address": map[string]interface{}{
"street": "test",
"number": 1,
},
}
var p Person
err := MapToStruct(m, &p)
if err != nil {
return
}
fmt.Printf("p.Addr.Street: %s", p.Addr.Street) //test
}
```
### <span id="EncodeByte">EncodeByte</span>
<p>Encode data to byte slice.</p>

View File

@@ -33,6 +33,7 @@ import (
- [ToJson](#ToJson)
- [ToString](#ToString)
- [StructToMap](#StructToMap)
- [MapToStruct](#MapToStruct)
- [EncodeByte](#EncodeByte)
- [DecodeByte](#DecodeByte)
- [DeepClone](#DeepClone)
@@ -388,6 +389,59 @@ func main() {
}
```
### <span id="MapToStruct">MapToStruct</span>
<p>将map转成structstruct中导出字段需要设置json tag标记</p>
<b>函数签名:</b>
```go
func MapToStruct(m map[string]interface{}, structObj interface{}) error
```
<b>Example:</b>
```go
package main
import (
"fmt"
"github.com/duke-git/lancet/convertor"
)
func main() {
type Address struct {
Street string `json:"street"`
Number int `json:"number"`
}
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Phone string `json:"phone"`
Addr *Address `json:"address"`
}
m := map[string]interface{}{
"name": "Nothin",
"age": 28,
"phone": "123456789",
"address": map[string]interface{}{
"street": "test",
"number": 1,
},
}
var p Person
err := MapToStruct(m, &p)
if err != nil {
return
}
fmt.Printf("p.Addr.Street: %s", p.Addr.Street) //test
}
```
### <span id="EncodeByte">EncodeByte</span>
<p>将data编码成字节切片</p>