標籤:jsoncpp long 錯誤
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 ambiguousinclude/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類型是它美中不足的地方。
希望後續的升級能夠解決這個問題!~
jsoncpp 不能處理long類型資料