基于gjson,递归获取全部key的路径
This commit is contained in:
94
gjson_hack/path_test.go
Normal file
94
gjson_hack/path_test.go
Normal file
@ -0,0 +1,94 @@
|
||||
// Package gjson_hack ...
|
||||
//
|
||||
// Description : gjson_hack ...
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 2024-11-27 15:52
|
||||
package gjson_hack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestPath(t *testing.T) {
|
||||
mapData := map[string]any{
|
||||
"person_list": []map[string]any{
|
||||
{"name": "zhang", "age": 10},
|
||||
{"name": "li", "age": 20},
|
||||
{"name": "wang", "age": 30},
|
||||
},
|
||||
"company_info": map[string]any{
|
||||
"address": "Beijing",
|
||||
"email": "xxx@xxx.com",
|
||||
},
|
||||
"sex": "man",
|
||||
}
|
||||
byteData, _ := json.Marshal(mapData)
|
||||
pathRes, err := Path(string(byteData), nil)
|
||||
if nil != err {
|
||||
fmt.Println(err.Error())
|
||||
} else {
|
||||
for _, item := range pathRes.List {
|
||||
fmt.Println(item)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestPathOnlyFinallyPath(t *testing.T) {
|
||||
mapData := map[string]any{
|
||||
"person_list": []map[string]any{
|
||||
{"name": "zhang", "age": 10},
|
||||
{"name": "li", "age": 20},
|
||||
{"name": "wang", "age": 30},
|
||||
},
|
||||
"company_info": map[string]any{
|
||||
"address": "Beijing",
|
||||
"email": "xxx@xxx.com",
|
||||
},
|
||||
"sex": "man",
|
||||
}
|
||||
byteData, _ := json.Marshal(mapData)
|
||||
pathRes, err := Path(string(byteData), &PathOption{
|
||||
UnfoldArray: false,
|
||||
MaxDeep: 0,
|
||||
OnlyFinalPath: true,
|
||||
})
|
||||
if nil != err {
|
||||
fmt.Println(err.Error())
|
||||
} else {
|
||||
for _, item := range pathRes.List {
|
||||
fmt.Println(item)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestPathOnlyFinallyPathWithUnfoldArray(t *testing.T) {
|
||||
mapData := map[string]any{
|
||||
"person_list": []map[string]any{
|
||||
{"name": "zhang", "age": 10},
|
||||
{"name": "li", "age": 20},
|
||||
{"name": "wang", "age": 30},
|
||||
},
|
||||
"company_info": map[string]any{
|
||||
"address": "Beijing",
|
||||
"email": "xxx@xxx.com",
|
||||
},
|
||||
"sex": "man",
|
||||
}
|
||||
byteData, _ := json.Marshal(mapData)
|
||||
pathRes, err := Path(string(byteData), &PathOption{
|
||||
UnfoldArray: true,
|
||||
MaxDeep: 0,
|
||||
OnlyFinalPath: false,
|
||||
})
|
||||
if nil != err {
|
||||
fmt.Println(err.Error())
|
||||
} else {
|
||||
for _, item := range pathRes.List {
|
||||
fmt.Println(item)
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user