Remove go-json

This commit is contained in:
世界
2022-07-26 13:53:25 +08:00
parent 75508bccb5
commit 0347a7c038
10 changed files with 14 additions and 40 deletions

View File

@@ -2,6 +2,7 @@ package badjson
import (
"bytes"
"reflect"
"github.com/sagernet/sing-box/common/json"
E "github.com/sagernet/sing/common/exceptions"
@@ -36,11 +37,15 @@ func (a *JSONArray[T]) UnmarshalJSON(content []byte) error {
func (a *JSONArray[T]) decodeJSON(decoder *json.Decoder) error {
for decoder.More() {
var item T
err := decoder.Decode(&item)
value, err := decodeJSON(decoder)
if err != nil {
return err
}
item, ok := value.(T)
if !ok {
var defValue T
return E.New("can't cast ", value, " to ", reflect.TypeOf(defValue))
}
*a = append(*a, item)
}
return nil

View File

@@ -49,7 +49,7 @@ func (m *JSONObject) UnmarshalJSON(content []byte) error {
}
err = m.decodeJSON(decoder)
if err != nil {
return err
return E.Cause(err, "decode json object content")
}
objectEnd, err := decoder.Token()
if err != nil {
@@ -63,14 +63,15 @@ func (m *JSONObject) UnmarshalJSON(content []byte) error {
func (m *JSONObject) decodeJSON(decoder *json.Decoder) error {
for decoder.More() {
var entryKey string
err := decoder.Decode(&entryKey)
keyToken, err := decoder.Token()
if err != nil {
return err
}
entryKey = keyToken.(string)
var entryValue any
entryValue, err = decodeJSON(decoder)
if err != nil {
return err
return E.Cause(err, "decode value for ", entryKey)
}
m.Put(entryKey, entryValue)
}