QT4引入QJson擴展

QT4引入QJson擴展頗爲複雜,百度搜索可以查看到解決方案,大概是如下過程:
1、從http://qjson.sourceforge.net/build/下載qjson擴展源碼。
2、下載windows版的cmake(64位還是32位無所謂,只是個編譯工具)工具,版本貌似要求大於2.8,一般下載3.0以上,但不要高太多(文件太大從國外下載那個網速。。。)。
3、編譯它。
4、把庫libqjson.dll拷貝到Qt的bin目錄,比如我的Qt版本4.8.7,就拷貝到C:\Qt\4.8.7\bin,注意不是MinGWGcc4.8.2,更不是qtcreator-2.8.1。
5、把庫libqjson.a拷貝到Qt的lib目錄,我的是C:\Qt\4.8.7\lib。
6、把源碼目錄qjson拷貝到Qt的src目錄:C:\Qt\4.8.7\src。
7、把頭文件目錄拷貝到Qt的include目錄,我的是C:\Qt\4.8.7\include。
8、工程文件裏增加:LIBS += -lqjson

到此爲止,QT4已經支持QJson擴展了,程序裏寫代碼就可以對Json字符串進行解析,或者對QMap數據進行json序列化。下面繼續介紹用法。

1、對Json字符串進行解析,返回QVariantMap對象:
引入頭文件:#include <QJson/Parser>,然後編寫如下代碼:

    const QString data = "{username :\"admin\", password :\"123456\", age: 32}";
    QJson::Parser parser;
    bool ok;
    QVariantMap result = parser.parse(data.toUtf8(), &ok).toMap();
    if (!ok) {
        return false;
    }
    QString username = result["username"].toString();
    QString password = result["password"].toString();
    int age = result["age"].toInt();

具體QVariantMap 的用法可參考文檔。

2、對QVariantMap 進行json序列化:

QVariantMap data;
data.insert("username", "admin");
data.insert("password", "123456");
data.insert("age", 32);  
QJson::Serializer serializer;
QByteArray json = serializer.serialize(data);
qDebug() << json;

注意本來serialize方法只支持QVariant對象,但是這個對象的構造函數太多了,所以相當於可以傳入任何構造函數的某種參數即可自動生成該對象,就像某個需要QString參數的方法,我們也可以直接傳入char *參數一樣,因爲自動構造成對象了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章