json-cpp longlong 类型的扩展

本文介绍了在cocos2dx项目中遇到json-cpp不支持long long类型的困扰,通过扩展json-cpp源码,增加longValue枚举类型、decodeLongLong解析方法和asLongLong转换方法,解决了数字精度问题。同时提醒注意后台传输数字可能为字符串的情况,需要额外处理。
摘要由CSDN通过智能技术生成

          用cocos2dx做跨平台项目的时候,自然就用了c++版本的json库,这个json-cpp是用的比较多的,总体用起来还算可以,有一个很不方便的地方就是不支持long long(int64)类型,一开始我使用double类型来强制转换,后来出了bug,double精度只有16位,超过20位的就会被四舍五入,试过了官网上bug列表里的方法都不行,

没办法,花点时间添加longValue才解决这个问题,加地方实在太多了,附上主要扩展代码备忘:


一,定义一个long类型

//lancer add long

   typedef long long Long;


二、

//类型里添加longValue   

   enum ValueType

   {

      nullValue = 0, ///< 'null' value

      intValue,      ///< signed integer value

      uintValue,     ///< unsigned integer value

      //lancer add for longlong

      longValue,     //signed int 64

      realValue,     ///< double value

      stringValue,   ///< UTF-8 string value

      booleanValue,  ///< bool value

      arrayValue,    ///< array value (ordered list)

      objectValue    ///< object value (collection of name/value pairs).


   };


三、添加一个解析long类型的方法

bool 

Reader::decodeLongLong( Token &token )

{

    Long value = 0;

   

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值