From 09f46265fe49799adfd95b2db4a9d56408a8f95f Mon Sep 17 00:00:00 2001 From: steven confessore Date: Fri, 11 Nov 2022 20:37:52 -0500 Subject: [PATCH] handle encoding of number based key properties i was unable to encode a table due to some number based key properties. i modified the encode function to check for number based keys in addition to the already present string based keys. an error will still be returned if the key is neither string nor number based. it works in my cases --- json.lua | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/json.lua b/json.lua index 711ef78..539031f 100644 --- a/json.lua +++ b/json.lua @@ -87,10 +87,13 @@ local function encode_table(val, stack) else -- Treat as an object for k, v in pairs(val) do - if type(k) ~= "string" then - error("invalid table: mixed or invalid key types") + if type(k) == "string" then + table.insert(res, encode(k, stack) .. ":" .. encode(v, stack)) + elseif type(k) == "number" then + table.insert(res, encode(string.format(k), stack) .. ":" .. encode(v, stack)) + else + error("invalid table: mixed or invalid key types"); end - table.insert(res, encode(k, stack) .. ":" .. encode(v, stack)) end stack[val] = nil return "{" .. table.concat(res, ",") .. "}"