加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

jsoncpp 不能处理long类型数据

发布时间:2020-12-16 19:13:44 所属栏目:百科 来源:网络整理
导读:jsoncpp,是一个c++的解析和生成json的开源工具。如果你的c++程序需要解析或生成json,它会使这个过程变得很简单! 但是,今天在用jsoncpp进行生成json的时候报了错误,很显然这不是我程序的问题。 Test.cpp: In function ‘std::string createJsonData()’:

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类新的接口。所以jsoncpp无法处理包含long类新的数据。

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


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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读