Update json.lua

pull/44/head
alexandro-rezakhani 2022-11-20 00:25:18 -05:00 committed by GitHub
parent 43efcf7de4
commit c7968a00b9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 42 additions and 38 deletions

View File

@ -55,6 +55,7 @@ local function encode_nil(val)
return "null"
end
local json_object_tag = {}
local function encode_table(val, stack)
local res = {}
@ -64,6 +65,8 @@ local function encode_table(val, stack)
if stack[val] then error("circular reference") end
stack[val] = true
if getmetatable(val) ~= json_object_tag and (rawget(val, 1) ~= nil or next(val) == nil) then
-- Check whether to treat as a array or object
local array = true
local length = 0
@ -81,7 +84,6 @@ local function encode_table(val, stack)
end
end
end
if array then
if nLen > length then
length = nLen
@ -92,7 +94,6 @@ local function encode_table(val, stack)
end
stack[val] = nil
return "[" .. table.concat(res, ",") .. "]"
else
-- Treat as an object
for k, v in pairs(val) do
@ -101,12 +102,15 @@ local function encode_table(val, stack)
error("invalid table: mixed or invalid key types")
end
]]
if k ~= "_" then
table.insert(res, encode(k, stack) .. ":" .. encode(v, stack))
end
end
stack[val] = nil
return "{" .. table.concat(res, ",") .. "}"
end
end
end
local function encode_string(val)