Python may help
Class dc.Demo
{
ClassMethod ValidateJSON(data As %String = "") As %Status [ Language = python ]
{
import iris
import json
from json import JSONDecodeError
try:
json.loads(data)
return iris.system.Status.OK()
except JSONDecodeError as ex:
return iris.system.Status.Error(5001, f"{ex.msg}: line {ex.lineno} column {ex.colno} (char {ex.pos})")
except Exception as ex:
return iris.system.Status.Error(5001, repr(ex))
}
}
And result
USER>set status = ##class(dc.Demo).ValidateJSON("{""aa"":123 ""name"": ""value""}") do:'status $system.OBJ.DisplayError(status)
ERROR #5001: Expecting ',' delimiter: line 1 column 11 (char 10)
USER>set status = ##class(dc.Demo).ValidateJSON("{""aa"": true, ") do:'status $system.OBJ.DisplayError(status)
ERROR #5001: Expecting property name enclosed in double quotes: line 1 column 14 (char 13)
USER>set status = ##class(dc.Demo).ValidateJSON("{""aa"": wrong ") do:'status $system.OBJ.DisplayError(status)
ERROR #5001: Expecting value: line 1 column 8 (char 7)
USER>set status = ##class(dc.Demo).ValidateJSON("{""aa"": true}") do:'status $system.OBJ.DisplayError(status)- Log in to post comments
.png)
.png)
.png)
.png)