-
-
Notifications
You must be signed in to change notification settings - Fork 370
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
一个json字符串,decode成table,之后再把这个table encode成json,俩个json不一样! #19
Comments
目测是源码encode_table的next测到nil直接判定为array了 local t_type = 'array'
local n = 0
local max = -1
for k in pairs(val) do
if type(k) == "string" then
t_type = 'object'
break
elseif type(k) == "number" then
n = n + 1
max = math.max(max, k)
else
error("invalid table: mixed or invalid key types")
end
end
if t_type == 'array' then
if n == 0 then
t_type = 'object'
elseif n ~= #val then
t_type = 'sparse_array'
end
end 来区分array、稀疏array跟object |
English please. |
(Just translating)
local json_before = {"key":[{},{},{},{},{},{},{},{},{},{}],"roleAttr":{"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"0":0,"1":0,"2":0}} Why are
It seems like the
...to distinguish between array, sparse array and table. |
parse_object
encode_table
|
Hello! Would you mind creating a pull request on my fork so that I may include your suggestions? Thanks! |
local json_before = {"key":[{},{},{},{},{},{},{},{},{},{}],"roleAttr":{"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"0":0,"1":0,"2":0}}
local list = json.decode(json_before );
local json_after = json.encode(list);
此时的json_afre为:{"key":[[],[],[],[],[],[],[],[],[],[]],"roleAttr":{"1":0,"0":0,"3":0,"2":0,"5":0,"4":0,"7":0,"6":0,"9":0,"8":0}}
为何不一样?
The text was updated successfully, but these errors were encountered: