json.lua 953 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. local cjson = require "cjson"
  2. local _M = {}
  3. cjson.encode_empty_table_as_object(false)
  4. function _M.loads(str)
  5. local ok, jso = pcall(function() return cjson.decode(str) end)
  6. if ok then
  7. return jso
  8. else
  9. return nil, jso
  10. end
  11. end
  12. local function is_json_simple(str)
  13. local fc = string.sub(str,1, 1)
  14. local lc = string.sub(str, -1)
  15. if fc == "{" and lc == "}" then
  16. return true
  17. elseif fc == "[" and lc == "]" then
  18. return true
  19. end
  20. return false
  21. end
  22. function _M.tryloads(str)
  23. if type(str) == 'string' then
  24. if is_json_simple(str) then
  25. local ok, jso = pcall(function() return cjson.decode(str) end)
  26. if ok then
  27. return jso
  28. end
  29. end
  30. end
  31. return str
  32. end
  33. function _M.dumps(tab)
  34. if tab and type(tab) == 'table' then
  35. return cjson.encode(tab)
  36. else
  37. return tostring(tab)
  38. end
  39. end
  40. return _M