mirror of https://github.com/rxi/json.lua.git
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 casespull/43/head
parent
dbf4b2dd2e
commit
09f46265fe
9
json.lua
9
json.lua
|
@ -87,10 +87,13 @@ local function encode_table(val, stack)
|
||||||
else
|
else
|
||||||
-- Treat as an object
|
-- Treat as an object
|
||||||
for k, v in pairs(val) do
|
for k, v in pairs(val) do
|
||||||
if type(k) ~= "string" then
|
if type(k) == "string" then
|
||||||
error("invalid table: mixed or invalid key types")
|
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
|
end
|
||||||
table.insert(res, encode(k, stack) .. ":" .. encode(v, stack))
|
|
||||||
end
|
end
|
||||||
stack[val] = nil
|
stack[val] = nil
|
||||||
return "{" .. table.concat(res, ",") .. "}"
|
return "{" .. table.concat(res, ",") .. "}"
|
||||||
|
|
Loading…
Reference in New Issue