diff --git a/utils/utils.go b/utils/utils.go index 1d7f9ca557e29f61107e929e9854631827f164ea..816f4f67c1d795afbab16dc6b6fc4593cd6d5132 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -25,6 +25,7 @@ import ( var ( Error = js.Global().Get("Error") + JSON = js.Global().Get("JSON") Promise = js.Global().Get("Promise") Uint8Array = js.Global().Get("Uint8Array") ) @@ -62,15 +63,20 @@ func WrapCB(parent js.Value, m string) func(args ...interface{}) js.Value { } // JsonToJS converts a marshalled JSON bytes to a Javascript object. -func JsonToJS(src []byte) js.Value { +func JsonToJS(src []byte) (js.Value, error) { var inInterface map[string]interface{} err := json.Unmarshal(src, &inInterface) if err != nil { Throw(TypeError, err) - return js.ValueOf(nil) + return js.ValueOf(nil), err } - return js.ValueOf(inInterface) + return js.ValueOf(inInterface), nil +} + +// JsToJson converts the Javascript value to JSON. +func JsToJson(value js.Value) string { + return JSON.Call("stringify", value).String() } type PromiseFn func(resolve, reject func(args ...interface{}) js.Value)