lua里面json对于非连续数组的存储方式

刚刚写游戏存档的时候遇到了这个问题,于是记录一下,希望对一些lua入门者有有帮助

lua里面,获取数组长度有两种方法

lua = {1,2,3}

#lua
table.maxn(lua)

#是取长度符号,一般情况下取到的长度和maxn返回值相同, 但是如果数组非连续,比如存在两个nil,Lua会认为数组在nil这里结束,返回一个非准确长度。

但很多数组里都会是非连续的,json为了防止这种情况造成的数据丢失,在遇到非连续数组时,会把非末尾的nil转换成userdata:NULL进行存储

这样就起到了防止数据丢失的效果。

比如,

lua = {nil,nil,1,1,nil,nil,nil,nil}
test = json.decode(lua)
test = json.encode(test)
table.print(test)

结果不会是原来数组,将是{userdata:NULL,userdata:NULL,1,1}

最后一个实体元素前面的空值变为userdata:NULL,后面的nil自动省略。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值