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;
}

浙公网安备 33010602011771号