还在苦苦敲代码开发APP?你out啦! 试试积木搭建APP吧~

jsoncpp 不能处理__int64(long long)类型数据

来源:     2017-03-13 17:08:45    人气:     我有话说( 0 人参与)

jsoncpp,是一个c++的解析和生成json的开源工具。如果你的c++程序需要解析或生成json,它会使这个过程变得很简单!但是,今天在用jsoncpp进...

jsoncpp,是一个c++的解析和生成json的开源工具。如果你的c++程序需要解析或生成json,它会使这个过程变得很简单!

但是,今天在用jsoncpp进行生成json的时候报了错误,很显然这不是我程序的问题。

Test.cpp: In function ‘std::string createJsonData()’:
Test.cpp:41: error: conversion from ‘long long int’ to ‘const Json::Value’ is ambiguous
include/json/value.h:205: note: candidates are: Json::Value::Value(bool)
include/json/value.h:188: note:                 Json::Value::Value(const char*) <near match>
include/json/value.h:187: note:                 Json::Value::Value(double)
include/json/value.h:186: note:                 Json::Value::Value(Json::UInt)
include/json/value.h:185: note:                 Json::Value::Value(Json::Int)
include/json/value.h:184: note:                 Json::Value::Value(Json::ValueType) <near match>

当我的要生成json的数据中包含long类型时,出现了这个错误!如果将long改为int或double则可以通过编译。

根据错误信息,很显然,jsoncpp并没有实现插入数据中有long long类型的接口。所以jsoncpp无法处理包含long long类型的数据。

在网上搜了一下,有人解释为何jsoncpp不支持long long数据的接口,“为什么JsonCpp里面为什么没有64位整数?Json起源于JavaScript,在js中数字的表示可能与高级语言中不一样, 如果一位数字32位表示不了那么js中应该一律都是用double表示, 所以说js中 大整数其实也是double, 这也就能解释为什么在jsoncpp中为什么没提供64为整数转化的方法。”

我尝试将long类型改为double类型,可以通过,不过生成的json串中,long -> double的数据会在数字后面多一个小数点。这并不是我想要的!

jsoncpp是个不错的工具,但不能处理long类型是它美中不足的地方。

希望后续的升级能够解决这个问题!~

jsoncpp __int64 long

本文源自互联网,采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可,
版权归原作者,如有问题请联系service@tsingfun.com (编辑:admin)
分享到: