feat: 在 rfx.String() 中,先尝试用 cast.ToStringE 将当前值转为字符串,如果失败则增加了一个兜底逻辑:尝试使用 json.Marshal 将当前值序列化为 JSON 字符串并返回

This commit is contained in:
what 2025-12-04 14:09:23 +08:00
parent b373dde7f7
commit 243d1ffac8

10
rfx.go
View File

@ -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
}