1、类型不同解析结果不同,尤其是Unsigned int 和int 是2种类型
Json::Value v;
// v["test"][(unsigned int)0] = 2147488992; // 编译不过
v["test"][(unsigned int)0] = (int)2147488992;
v["test"][(unsigned int)1] = (unsigned int)2147488992;
std::string s;
Json::FastWriter w(s);
if (w.write(v))
{
Json::Value v2;
Json::Reader r;
if (r.parse(s, v2, false))
{
int n = v["test"].size();
for(unsigned int i=0; i< n; i++)
{
int nValue = v["test"][i].asint; /// ------------------------[1]
printf("%d : %ld !\n", i, nValue);
}
}
}
输出:
0 : 2147488992(对应的负数)
0 : 0(对应的负数)
如果【1】改为int nValue = v["test"][i].asUint;
0 : 0(对应的负数)
0 : 2147488992(对应的负数)

本文探讨了在使用JSON库时,不同类型如Unsigned int和int解析与转换可能导致的不一致结果。通过示例代码展示了当用unsigned int索引JSON数组,并进行asint和asUint操作时,数值转换的差异,提醒开发者注意类型匹配的重要性。
1万+

被折叠的 条评论
为什么被折叠?



