feat: 在 rfx.String() 中,先尝试用 cast.ToStringE 将当前值转为字符串,如果失败则增加了一个兜底逻辑:尝试使用 json.Marshal 将当前值序列化为 JSON 字符串并返回
This commit is contained in:
parent
b373dde7f7
commit
243d1ffac8
10
rfx.go
10
rfx.go
@ -1,6 +1,7 @@
|
||||
package reflux
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strconv"
|
||||
@ -657,9 +658,14 @@ func (r *rfx) Uint8() uint8 {
|
||||
|
||||
// String 将当前值转换为 string 类型
|
||||
func (r *rfx) String() string {
|
||||
result, err := cast.ToStringE(r.Any())
|
||||
data := r.Any()
|
||||
result, err := cast.ToStringE(data)
|
||||
if err != nil {
|
||||
panic(fmt.Sprintf("rfx: failed to convert to string: %v", err))
|
||||
if b, e := json.Marshal(data); e == nil {
|
||||
result = string(b)
|
||||
} else {
|
||||
panic(fmt.Sprintf("rfx: failed to convert to string: %v", err))
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user