diff --git a/database/gdb/gdb_model_cache.go b/database/gdb/gdb_model_cache.go index dac5040db..d63eb4d74 100644 --- a/database/gdb/gdb_model_cache.go +++ b/database/gdb/gdb_model_cache.go @@ -86,9 +86,13 @@ func (m *Model) getSelectResultFromCache(ctx context.Context, sql string, args . if cacheItem, ok = v.Val().(*selectCacheItem); ok { // In-memory cache. return cacheItem.Result, nil - } else if err = json.UnmarshalUseNumber(v.Bytes(), &cacheItem); err != nil { + } else { // Other cache, it needs conversion. - return nil, err + err = json.UnmarshalUseNumber(v.Bytes(), &cacheItem) + if err != nil { + return nil, err + } + return cacheItem.Result, nil } } return diff --git a/encoding/gjson/gjson_implements.go b/encoding/gjson/gjson_implements.go index 36dd0545f..2e9b547dc 100644 --- a/encoding/gjson/gjson_implements.go +++ b/encoding/gjson/gjson_implements.go @@ -26,7 +26,9 @@ func (j *Json) UnmarshalJSON(b []byte) error { // UnmarshalValue is an interface implement which sets any type of value for Json. func (j *Json) UnmarshalValue(value interface{}) error { - if r := New(value); r != nil { + if r := NewWithOptions(value, Options{ + StrNumber: true, + }); r != nil { // Value copy. *j = *r }