mirror of https://github.com/rxi/json.lua.git
Added checking and tests for trailing garbage when decoding
parent
19cc024df6
commit
eb6e343c53
7
json.lua
7
json.lua
|
@ -388,7 +388,12 @@ function json.decode(str)
|
|||
if type(str) ~= "string" then
|
||||
error("expected argument of type string, got " .. type(str))
|
||||
end
|
||||
return ( parse(str, next_char(str, 1, space_chars, true)) )
|
||||
local res, idx = parse(str, next_char(str, 1, space_chars, true))
|
||||
idx = next_char(str, idx, space_chars, true)
|
||||
if idx <= #str then
|
||||
decode_error(str, idx, "trailing garbage")
|
||||
end
|
||||
return res
|
||||
end
|
||||
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@ end)
|
|||
|
||||
test("literals", function()
|
||||
assert( json.decode("true") == true )
|
||||
assert( json.encode(true) == "true" )
|
||||
assert( json.encode(true) == "true" )
|
||||
assert( json.decode("false") == false )
|
||||
assert( json.encode(false) == "false" )
|
||||
assert( json.decode("null") == nil )
|
||||
|
@ -125,6 +125,8 @@ test("decode invalid", function()
|
|||
'{]',
|
||||
'[}',
|
||||
'"a',
|
||||
'10 xx',
|
||||
'{}123'
|
||||
}
|
||||
for i, v in ipairs(t) do
|
||||
local status = pcall(json.decode, v)
|
||||
|
@ -234,5 +236,3 @@ test("encode escape", function()
|
|||
assert( res == v, fmt("'%s' was not escaped properly", k) )
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue