QT4 第三方QJson的使用

说在前面:本篇不介绍Json基本知识,请自行了解。

  1. 下载第三方的QJson,备用Github链接。
  • 解压,复制里面的src文件夹到项目上。
    linger@linger-virtual-machine:~/install$ unzip ./qjson-master.zip
    linger@linger-virtual-machine:~/install$ cp qjson-master/src/ ~/test/test -rf


    QT4 第三方QJson的使用_第1张图片
  • 加入文件,编译,运行


    QT4 第三方QJson的使用_第2张图片

    QT4 第三方QJson的使用_第3张图片
  • 修改json_scanner.h和json_scanner.cc文件,把改为"FlexLexer.h"。


  • 因为要用到QVariantMap,所以在.pro加上network,工程加入QtNetwork。


    QT4 第三方QJson的使用_第4张图片

    QT4 第三方QJson的使用_第5张图片
  • 加入parser.h,写上代码,编译,运行。
    官方使用方法参考:usage-QJson;中文翻译参考:Qt 学习之路 2(63):使用 QJson 处理 JSON。
    QJson::Parser parser;
    bool ok;

    QString json("{"
            "\"encoding\" : \"UTF-8\","
            "\"plug-ins\" : ["
            "\"python\","
            "\"c++\","
            "\"ruby\""
            "],"
            "\"indent\" : { \"length\" : 3, \"use_space\" : true }"
            "}");
    QVariantMap result = parser.parse(json.toUtf8(), &ok).toMap();
    if (!ok) {
        qFatal("An error occurred 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();
    
  • 完成。


    QT4 第三方QJson的使用_第6张图片

另外的说明:

  1. 发生下图错误,说明.cpp或.so没有链接上.h,就是有声明没实现,需要编译一下,解决方法就是上面那样。


    QT4 第三方QJson的使用_第7张图片
  • 生成系统动态链接库。
    我不会,别问我。
    官方编译方法参考:Build-QJson。我参考了运行了下还是报错说没有编译,就是上面说的那个错误,有人弄好了求赐教。
    linger@linger-virtual-machine:~$ cd install/qjson-master/
    linger@linger-virtual-machine:~/install/qjson-master$ vim README.md
    linger@linger-virtual-machine:~/install/qjson-master$ mkdir build
    linger@linger-virtual-machine:~/install/qjson-master$ cd build/
    linger@linger-virtual-machine:~/install/qjson-master/build$ cmake -DCMAKE_INSTALL_PREFIX=preferred_path ..
    linger@linger-virtual-machine:~/install/qjson-master/build$ sudo su
    root@linger-virtual-machine:/home/linger/install/qjson-master/build# make && make install

你可能感兴趣的:(QT4 第三方QJson的使用)