在使用这个库函数的时候,最好使用2.1.0版(或者更新的)。
因为在2.1.0版新增了safe模块,在进行调用时,如果出现解析异常,不会抛出异常,而是返回Nil,这样可以避免程序意外退出。
如果直接采用cjson,如下:
local inputStr = '{"name":"void","br}'
...
local iJson = cjson.decode(inputStr)
...
程序将在cjson.decode()这一行意外退出,因为这里inputStr不是JSON格式数据,出现解析异常。
如果采用cjson.safe模块,如下:
local inputStr = '{"name":"void","br}'
...
local iJson = cjsonSafe.decode(inputStr)
...
这里虽然也出现了解析异常,但是由于cjson.safe返回的是nil,可以通过判断iJson是否为nil知道解析是否出现了问题。