之前说到我是因为接了个QT项目,才开始写这个博客的。这个项目使用到了Json格式的数据块,但是所接项目的要求是QT4.8.7,QT4是不自带Json处理的库的,从QT5才开始自带。迫不得已,就自己搜寻了一把资料,找到了QJson--一个开源的json处理库。

下面就讲讲编译和使用吧。

一、QJson

官网如后方链接: QJson

二、下载和编译

可以从官网找到下载的链接,会直接链接到这里: GitHub - flavio/qjson: QJson is a qt-based library that maps JSON data to QVariant objects.

最新版本已经到0.9.0了。

QJson的编译支持多种方式(命令行,图形化界面),多种平台(Unix,windows)。

我这边就采取了最直观的图形化界面编译的方式。需要以下几样东西:

  • Qt creator
  • QJson 源码
  • CMake(版本不要低于2.6)

利用Qt creator 添加CMake编译器,随后使用源码中的CMakeLists.txt进行编译。

A.添加CMake编译器

使用CMake安装包,傻瓜式安装CMake,下一步就完事了。

安装好后再进行添加,配置方式可以看我上一篇博客, 点这里

配置好后,你的kit应该是这样的

B. 编译QJson源码

  1. 打开 Qt Creator 。
  2. 选择:文件→打开文件或工程。
  3. 转到包含QJson源代码的目录。
  4. 找到并打开CMakeLists.txt文件。
  5. 打开 项目 选项卡,确保 构建目录 指向QJson源代码所在的路径。能方便拷贝所需目录。
  6. 选择:构建→全部构建。

随后你就能在你设置的 构建目录 中得到一份编译完的产物了。

2023.7 补充: 最近又用到了这个库,重新编译了一下,发现了新问题。编译成功时,会在目标目录同时生成 bin和lib。 编译生成目录结构

另外,打开QJson项目时请确保只有QJson项目,或者重新打开下QtCreator,否则可能像我一样出现编译失败的各种奇葩问题。

三、安装和使用

说是安装,但由于是windows下的编译安装,所以只需要手动拷贝一些目录就可以了。

  1. 编译产物 中的lib 目录下的内容 ,拷贝到Qt的lib目录,比如我的Qt版本4.8.7,就拷贝到D:\Qt\4.8.7\lib。(保险起见的话,可以往Qt的bin目录同样拷贝一份。 2023.7 补充: 直接将bin和lib目录直接覆盖Qt目录即可。
  2. 源码目录 下include 目录下的QJson ,整个拷贝到Qt的include目录。
  3. 源码目录 src下的 内容 ,拷贝到Qt的src目录:D:\Qt\4.8.7\src。没错,看起来有点奇怪,但就是这样。

在项目的pro文件中要加上:

LIBS     += -lQJson
在使用到的地方包含一下下面的头文件就好了
#include <QJson/Parser>
#include <QJson/Serializer>

反序列化(解析):

    const QString data = "{\"username\" :\"admin\", \"password\" :\"123456\", \"age\": 32}";
    QJson::Parser parser;
    bool ok;
    QVariantMap results=parser.parse(data.toUtf8(),&ok).toMap();
    if(!ok){
        qDebug() << "********failed********";
    else{
        QString username = results["username"].toString();
        QString password = results["password"].toString();
        int age = results["age"].toInt();
        qDebug() << "********successful*******";
        qDebug() << "********username is ********"<<username;
        qDebug() << "********password is ********"<<password;
        qDebug() << "********age is  ********"<<age;

 序列化(生成):

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

以上就是在QT4中使用QJson的内容了,欢迎讨论。

QT4 JSON The **qt-json** project is a simple collection of functions for parsing and serializing [JSON][js] data to and from [QVariant][var] hierarchies.
QJson开源项目安装与使用指南 qjsonQJson is a qt-based library that maps JSON data to QVariant objects.项目地址:https://gitcode.com/gh_mirrors/qj/qjson 项目概述 QJson是一款基于Qt库的轻量级JSON数据处理工具,它能够将JSON数据映射到Qt的QVariant对象中。这款库...
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,注意不是Mi
QJson下载:https://sourceforge.net/projects/qjson/;下载完毕后按照readme进行编译,最终编译生成的有一个动态库和几个头文件,都在build目录下;这些头文件和动态库按照平常的动态库使用即可:以下即为解析和组装函数使用(可以通过setIndentMode设置序列化格式): #include <QDebug> #include <iostream> #include <parser.h> #include <seria
这里需要引入json库,QT4不支持JSON格式,QT5自带了库,所以QT4需要引入第三方,这里使用的是Eeli Reilin的QtJson,还是挺简单的。 下面是示例的实现: // 单击创建json void Widget::on_pushButton_2_clicked()