json库使用问题积累

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

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(对应的负数)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值