关于jsoncpp读取浮点数类型字段

环境:VS2010SP1、boost 1.55

strVal = boost::lexical_cast<std::string>(jsonVal.asDouble());

上面语句转成的浮点会有变化,得用下面的语句代替

	try
			{
				Json::Value jsonVal = record[key.c_str()];

				std::string strVal;
				if (jsonVal.isstring())
				{
					strVal = jsonVal.asstring();
				} else if (jsonVal.isBool())
				{
					strVal = jsonVal.asBool()==true?"true":"false";
				} else if (jsonVal.isDouble())
				{
					char szBuf[MAX_PATH] = {0};
					sprintf(szBuf,"%lf",jsonVal.asDouble());
					strVal = szBuf;
				} else if (jsonVal.isInt())
				{
					strVal = boost::lexical_cast<std::string>(jsonVal.asInt());
				} else if (jsonVal.isUInt())
				{
					strVal = boost::lexical_cast<std::string>(jsonVal.asUInt());
				}
				mapRec[key.c_str()]=strVal;
			}
			catch(boost::bad_lexical_cast &e)
			{
			}


再测试,问题解决。猜测是boost::Lexical_cast的问题。

相关文章

AJAX是一种基于JavaScript和XML的技术,能够使网页实现异步交...
在网页开发中,我们常常需要通过Ajax从后端获取数据并在页面...
在前端开发中,经常需要循环JSON对象数组进行数据操作。使用...
AJAX(Asynchronous JavaScript and XML)是一种用于创建 We...
AJAX技术被广泛应用于现代Web开发,它可以在无需重新加载页面...
Ajax是一种通过JavaScript和HTTP请求交互的技术,可以实现无...