29 lines
402 B
Go
29 lines
402 B
Go
|
|
package util
|
||
|
|
|
||
|
|
import (
|
||
|
|
"encoding/json"
|
||
|
|
|
||
|
|
"github.com/gogf/gf/v2/container/gvar"
|
||
|
|
)
|
||
|
|
|
||
|
|
func ParseJSONField(field any) any {
|
||
|
|
var v *gvar.Var
|
||
|
|
switch val := field.(type) {
|
||
|
|
case *gvar.Var:
|
||
|
|
v = val
|
||
|
|
default:
|
||
|
|
return field
|
||
|
|
}
|
||
|
|
|
||
|
|
if v == nil || v.IsNil() || v.IsEmpty() {
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
|
||
|
|
str := v.String()
|
||
|
|
var result any
|
||
|
|
if json.Unmarshal([]byte(str), &result) == nil {
|
||
|
|
return result
|
||
|
|
}
|
||
|
|
return str
|
||
|
|
}
|