diff --git a/kernel/filesys/json_unmarshal.go b/kernel/filesys/json_unmarshal.go index 44235db52e1..339ce65124c 100644 --- a/kernel/filesys/json_unmarshal.go +++ b/kernel/filesys/json_unmarshal.go @@ -14,7 +14,7 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -//go:build !(windows && amd64) +//go:build !amd64 package filesys diff --git a/kernel/filesys/json_unmarshal_windows_amd64.go b/kernel/filesys/json_unmarshal_amd64.go similarity index 66% rename from kernel/filesys/json_unmarshal_windows_amd64.go rename to kernel/filesys/json_unmarshal_amd64.go index dcf58e9db94..52983fc8541 100644 --- a/kernel/filesys/json_unmarshal_windows_amd64.go +++ b/kernel/filesys/json_unmarshal_amd64.go @@ -18,13 +18,22 @@ package filesys import ( "github.com/bytedance/sonic" + "github.com/goccy/go-json" + "github.com/siyuan-note/logging" ) -func unmarshalJSON(data []byte, v interface{}) error { +func unmarshalJSON(data []byte, v interface{}) (err error) { //now := time.Now() - //defer func() { - // elapsed := time.Since(now) - // logging.LogInfof("[sonic] unmarshalJSON took %s", elapsed) - //}() - return sonic.Unmarshal(data, v) + defer func() { + if e := recover(); nil != e { + logging.LogWarnf("[sonic] unmarshalJSON failed: %s", e) + err = json.Unmarshal(data, v) + } /*else { + elapsed := time.Since(now) + logging.LogInfof("[sonic] unmarshalJSON took %s", elapsed) + }*/ + }() + + err = sonic.Unmarshal(data, v) + return }