Mercurial Hosting > luan
comparison src/luan/modules/Parsers.luan @ 1774:764723436f05
better json_parse exception
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 27 Jul 2023 17:24:49 -0600 |
parents | 36c28be6d432 |
children | e380ab6c0c78 |
comparison
equal
deleted
inserted
replaced
1773:b914a726061f | 1774:764723436f05 |
---|---|
23 local error = Luan.error | 23 local error = Luan.error |
24 local type = Luan.type or error() | 24 local type = Luan.type or error() |
25 local Table = require "luan:Table.luan" | 25 local Table = require "luan:Table.luan" |
26 local java_to_table_deep = Table.java_to_table_deep or error() | 26 local java_to_table_deep = Table.java_to_table_deep or error() |
27 local JsonParser = require "java:goodjava.json.JsonParser" | 27 local JsonParser = require "java:goodjava.json.JsonParser" |
28 local ParseException = require "java:goodjava.parser.ParseException" | |
28 | 29 |
29 -- converts json string to luan object | 30 -- converts json string to luan object |
30 function Parsers.json_parse(s) | 31 function Parsers.json_parse(s) |
31 local obj = JsonParser.parse(s) | 32 local obj |
33 try | |
34 obj = JsonParser.parse(s) | |
35 catch e | |
36 local java = e.java.getCause() | |
37 if java~=nil and java.instanceof(ParseException) then | |
38 e.message = java.getSuperMessage() | |
39 e.text = java.text or error() | |
40 e.error_index = java.errorIndex or error() | |
41 e.high_index = java.highIndex or error() | |
42 end | |
43 e.throw() | |
44 end | |
32 return type(obj)=="java" and java_to_table_deep(obj) or obj | 45 return type(obj)=="java" and java_to_table_deep(obj) or obj |
33 end | 46 end |
34 | 47 |
35 return Parsers | 48 return Parsers |