xlua rapidjson 错误序列化

测试1:

local t=
{
	[0]={}
}
print("t>" .. table.tostring(t))
print("t:" .. rapidjson.encode(t))

结果
在这里插入图片描述

测试2:

local t=
{
	[0]={a=1},
	[1]={a=2},
}
print("t>" .. table.tostring(t))
print("t:" .. rapidjson.encode(t))

在这里插入图片描述

出现这种问题的原因是,json中不能以 数字 作为key。
如果key都是数字,那么json会认为是一个数组,但是 key==0的这一条数据被丢弃了。

测试3:

local t=
{
	[0]={a=1},
	[1]={a=2},
	c=3,
}
 print("t>" .. table.tostring(t))
print("t:" .. rapidjson.encode(t))

在这里插入图片描述

如果一个table的key 既有数字,又有字符。
那么 rapidjson 就乱了

修仙3


经过测试其他的lua 解析库,发现这是一个通用的问题,估计是没法解决了。
不过还好只用来做网络通信,协议都很规范。不会出现上面的问题。

测试了json.lua

https://github.com/rxi/json.lua/blob/master/json.lua

json = require "json"

local t=
{
	[1]=2,
	a=1,
}
print(json.encode(t))

直接报错

xlua rapidjson 错误序列化_第1张图片

你可能感兴趣的:(Unity)