Improve usages of json.Unmarshal

This commit is contained in:
世界 2024-07-22 12:10:22 +08:00
parent 6aa8e2e490
commit 54b65b809f
No known key found for this signature in database
GPG key ID: CD109927C34A63C4
3 changed files with 4 additions and 8 deletions

View file

@ -1,8 +1,6 @@
package option
import (
"bytes"
"github.com/sagernet/sing/common"
E "github.com/sagernet/sing/common/exceptions"
"github.com/sagernet/sing/common/json"
@ -69,7 +67,5 @@ func UnmarshallExcluded(inputContent []byte, parentObject any, object any) error
if err != nil {
return err
}
decoder := json.NewDecoder(bytes.NewReader(inputContent))
decoder.DisallowUnknownFields()
return decoder.Decode(object)
return json.UnmarshalDisallowUnknownFields(inputContent, object)
}

View file

@ -128,12 +128,12 @@ func (l Listable[T]) MarshalJSON() ([]byte, error) {
}
func (l *Listable[T]) UnmarshalJSON(content []byte) error {
err := json.Unmarshal(content, (*[]T)(l))
err := json.UnmarshalDisallowUnknownFields(content, (*[]T)(l))
if err == nil {
return nil
}
var singleItem T
newError := json.Unmarshal(content, &singleItem)
newError := json.UnmarshalDisallowUnknownFields(content, &singleItem)
if newError != nil {
return E.Errors(err, newError)
}

View file

@ -26,5 +26,5 @@ func (o *UDPOverTCPOptions) UnmarshalJSON(bytes []byte) error {
if err == nil {
return nil
}
return json.Unmarshal(bytes, (*_UDPOverTCPOptions)(o))
return json.UnmarshalDisallowUnknownFields(bytes, (*_UDPOverTCPOptions)(o))
}