fix json parse not throwing error when incorrect

This commit is contained in:
2024-04-05 19:40:57 +02:00
parent 82aae37479
commit bf15b435c2
3 changed files with 7 additions and 6 deletions

View File

@@ -70,7 +70,7 @@ func ArRead(args ...any) (any, ArErr) {
if err != nil { if err != nil {
return ArObject{}, ArErr{TYPE: "Runtime Error", message: err.Error(), EXISTS: true} return ArObject{}, ArErr{TYPE: "Runtime Error", message: err.Error(), EXISTS: true}
} }
return jsonparse(text), ArErr{} return jsonparse(text)
}}, }},
"contentType": builtinFunc{"contentType", func(...any) (any, ArErr) { "contentType": builtinFunc{"contentType", func(...any) (any, ArErr) {
file.Seek(0, io.SeekStart) file.Seek(0, io.SeekStart)

View File

@@ -33,10 +33,11 @@ func convertToArgon(obj any) any {
return nil return nil
} }
func jsonparse(str string) any { func jsonparse(str string) (any, ArErr) {
var jsonMap any var jsonMap any
json.Unmarshal([]byte(str), &jsonMap) var err = json.Unmarshal([]byte(str), &jsonMap)
return convertToArgon(jsonMap) if err != nil {return nil, ArErr{TYPE: "Runtime Error", message: err.Error(), EXISTS: true}}
return convertToArgon(jsonMap), ArErr{}
} }
func jsonstringify(obj any, level int) (string, error) { func jsonstringify(obj any, level int) (string, error) {
@@ -90,7 +91,7 @@ var ArJSON = Map(anymap{
return nil, ArErr{TYPE: "Runtime Error", message: "parse takes a string not a '" + typeof(args[0]) + "'", EXISTS: true} return nil, ArErr{TYPE: "Runtime Error", message: "parse takes a string not a '" + typeof(args[0]) + "'", EXISTS: true}
} }
args[0] = ArValidToAny(args[0]) args[0] = ArValidToAny(args[0])
return jsonparse(args[0].(string)), ArErr{} return jsonparse(args[0].(string))
}}, }},
"stringify": builtinFunc{"stringify", func(args ...any) (any, ArErr) { "stringify": builtinFunc{"stringify", func(args ...any) (any, ArErr) {
if len(args) == 0 { if len(args) == 0 {

View File

@@ -10,7 +10,7 @@ var Args = os.Args[1:]
type stack = []ArObject type stack = []ArObject
const VERSION = "3.0.2" const VERSION = "3.0.3"
// Example struct // Example struct
type Person struct { type Person struct {