linux Qt4 QJson库使用

QJson下载:https://sourceforge.net/projects/qjson/;下载完毕后按照readme进行编译,最终编译生成的有一个动态库和几个头文件,都在build目录下;这些头文件和动态库按照平常的动态库使用即可:以下即为解析和组装函数使用(可以通过setIndentMode设置序列化格式):

#include <QDebug>
#include <iostream>
#include <parser.h>
#include <serializer.h>
#include <QVariantMap>

using namespace QJson;

int main(int argc, char *argv[])
{
    QString json("{\"encoding\" : \"UTF-8\",\"plug-ins\" : [\"python\",\"c++\",\"ruby\"],\"indent\" : { \"length\" :\"3\", \"use_space\" : \"true\" }}");
    qDebug()<<json;

    /* 对{}解析使用QVariantMap作为承载类型
       对[]解析使用QVariantList作为承载类型 */
    Parser parser;
    bool ok;
    QVariantMap result = parser.parse (json.toLocal8Bit(), &ok).toMap();
    if (!ok)
    {
        qFatal("An error occured during parsing");
        exit (1);
    }
    qDebug() << "encoding:" << result["encoding"].toString();
    qDebug() << "plugins:";
    foreach (QVariant plugin, result["plug-ins"].toList())
    {
        qDebug() << "\t-" << plugin.toString();
    }
    QVariantMap nestedMap = result["indent"].toMap();
    qDebug() << "length:" << nestedMap["length"].toInt();
    qDebug() << "use_space:" << nestedMap["use_space"].toBool();

    /* 序列化:QVariantMap为一个{}组装
               QVariantList为一个[]组装 */
    qDebug()<<"\n\n";
    QVariantMap myMap1;
    myMap1["key1"] = "value1";
    QVariantList people;
    QVariantList people2;
    people<<"people1"<<"people2";
    myMap1["key2"] = people;
    QVariantMap myMap2;
    QVariantMap myMap3;
    myMap2["key4"] = "value4";
    myMap1["key3"] = myMap2;
    myMap1["key5"] = myMap3;
    myMap1["key6"] = people2;
    Serializer serializer;      serializer.setIndentMode(IndentCompact);
    json = serializer.serialize(myMap1, &ok);
    qDebug()<<json;
}
posted @ 2021-04-28 15:10  呵哈呵  阅读(171)  评论(0)    收藏  举报