Julia JSON decode with positional error context
Julia
using JSON3
function parse_json(text; label="payload")
isempty(strip(text)) && throw(ArgumentError("$label is empty"))
try
return JSON3.read(text)
catch err
msg = sprint(showerror, err)
m = match(r"at byte (\d+)", msg)
byte = m === nothing ? 1 : parse(Int, m.captures[1])
near = first(string(text), min(40, length(string(text))))
throw(ArgumentError("$label: invalid JSON near byte $byte, context: $near"))
end
end
println(parse_json("[1, 2, 3]"))