From bf15b435c2c3ddabd60b8d65cab1e733cfb948e5 Mon Sep 17 00:00:00 2001 From: William Bell Date: Fri, 5 Apr 2024 19:40:57 +0200 Subject: [PATCH] fix json parse not throwing error when incorrect --- src/file.go | 2 +- src/json.go | 9 +++++---- src/main.go | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/file.go b/src/file.go index 58f711b..5ce5944 100644 --- a/src/file.go +++ b/src/file.go @@ -70,7 +70,7 @@ func ArRead(args ...any) (any, ArErr) { if err != nil { 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) { file.Seek(0, io.SeekStart) diff --git a/src/json.go b/src/json.go index ff02a63..7053a2d 100644 --- a/src/json.go +++ b/src/json.go @@ -33,10 +33,11 @@ func convertToArgon(obj any) any { return nil } -func jsonparse(str string) any { +func jsonparse(str string) (any, ArErr) { var jsonMap any - json.Unmarshal([]byte(str), &jsonMap) - return convertToArgon(jsonMap) + var err = json.Unmarshal([]byte(str), &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) { @@ -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} } args[0] = ArValidToAny(args[0]) - return jsonparse(args[0].(string)), ArErr{} + return jsonparse(args[0].(string)) }}, "stringify": builtinFunc{"stringify", func(args ...any) (any, ArErr) { if len(args) == 0 { diff --git a/src/main.go b/src/main.go index 0cc4d2e..1114fe2 100644 --- a/src/main.go +++ b/src/main.go @@ -10,7 +10,7 @@ var Args = os.Args[1:] type stack = []ArObject -const VERSION = "3.0.2" +const VERSION = "3.0.3" // Example struct type Person struct {