2014-11-14 157 views
1

有沒有辦法在使用rapidjson解析json時獲取雙精度值的底層字節。在rapidjson解析中獲取一個double值的原始字符串(或字節)?

看看下面的代碼:

string temp_json2 = "{\"byte_size\":1000.3}"; 
rapidjson::Document doc; 
doc.Parse<0>(temp_json2.c_str()); 

rapidjson::Value::ConstMemberIterator iter = doc.MemberBegin(); 

const rapidjson::Value& key = iter->name; 
std::cout << key.GetString() << " = "; 

const rapidjson::Value& val = iter->value; 
std::cout << val.GetDouble(); 

我想要得到的東西像

val.GetRawString();而不是val.GetDouble();

我需要的原因是我不想在轉換過程中丟失任何精度。請注意,我沒有選擇修改json以將雙引號括起來。

+0

您是否找到解決方案?我們遇到同樣的問題。 – bpeikes 2016-05-20 15:24:06

回答

1

目前沒有。

我正在研究一個「全精度」解析選項(相當長時間),它可以精確地將字符串解析爲double。使用grisu2算法,double到字符串的轉換已經很精確。但是如果一個字符串不能精確地代表double,它仍然會失去一些精確度。

爲了支持您的需求,可能需要添加解析選項,並更改SAX和DOM界面。如果您希望實現此功能,請報告here以進一步討論。