boost使用时要根据自己使用的库的情况来确定到底是否要编译,要编译哪些库,并不需要所有的都编译。
boost中有些库是需要编译的,有些则能直接用(模板库嘛,都在.hpp中了)。
在tinyjson 官网上有示例可看。
下面是我使用的一段代码:
void Session::parse(const QByteArray &message)
{
using namespace std;
QStringList slData;
try
{
string str(message.data());
json::grammar<char>::variant var = json::parse(str.begin(), str.end());
if (var->empty() || var->type() != typeid(json::grammar<char>::object))
{
qDebug() << "[EXCEPTION]\t" << "var is not a object"
<< var->type().name();
return;
}
json::grammar<char>::object const &obj =
boost::any_cast<json::grammar<char>::object>(*var);
for (json::grammar<char>::object::const_iterator it = obj.begin();
it != obj.end(); ++it)
{
if (it->first == "data")
{
json::grammar<char>::array &a =
boost::any_cast<json::grammar<char>::array>(*(it->second));
string v;
int cnt = a.size();
for (int i = 0; i < cnt; i++)
{
v = boost::any_cast<string>(*a
);
slData << QString::fromUtf8(v.c_str());
}
}
}
}
catch (exception &e)
{
qDebug() << e.what();
}
catch (...)
{
qDebug() << "parse data error";
}
if (!slData.isEmpty())
{
emit dataReceived(slData);
}
}
以上代码解析的是{"data":["str1","str2","str3"]}样式的结构,服务器端是PHP(UTF-8)的,型如:json_encode(array("data" => array("str1", "str2", "str3)))[ 此帖被XChinux在2010-01-26 09:43重新编辑 ]