用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;