Browse Source

Improve usages of `json.Unmarshal`

世界 1 year ago
parent
commit
f4f5a3c925
3 changed files with 4 additions and 8 deletions
  1. 1 5
      option/json.go
  2. 2 2
      option/types.go
  3. 1 1
      option/udp_over_tcp.go

+ 1 - 5
option/json.go

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

+ 2 - 2
option/types.go

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

+ 1 - 1
option/udp_over_tcp.go

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