• QT 使用jsoncpp


    编译jsoncpp

     

    编译前先安装好python,scons,解压jsoncpp到目录e:\jsconcpp,查看目录下的readme,有关于编译的说明的,根据说明做相应操作就可以。

    打开Visual Studio 2005 Command Prompt 命令行,输入以下命令进行编译

    scons platform =msvc80

     

    编译完成后在子目录libs\msvc80就生成了json_vc80_libmt.lib,这就是此库的静态版本了。想动态编译,但不知道怎么搞,readme没有说明。

     

    QT中使用jsconcpp

    更改pro项目文件

    对项目进行更改,引用相应的库和头文件路径

    INCLUDEPATH += e:/ jsconcpp /jsoncpp-src-0.6.0-rc2/include/json

    LIBS+=-Le:/ jsconcpp /jsoncpp-src-0.6.0-rc2/libs/msvc80 -ljson_vc80_libmt

    QMAKE_CFLAGS_RELEASE    = -O2 /MT

    QMAKE_CFLAGS_DEBUG      = -Zi /MT

    QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE

    QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG

     

     

    Jsoncpp使用非常简单,就汲到几个类

     

      Json::Value    //代表每个值,可以转换成不同的数据类型
    Json::Reader   //json字符串或者文件进行反序列化
    Json::FastWriter //序列化json字符串,输出的是多字节内容,如果需要utf8格式,需要自己对输出的字符串进行转换
     
     
    Jsoncpp序列例子
    void writeDemo( )
    {
        Json::Value root;
        Json::Value arrayObj;
        Json::Value item;
        Json::FastWriter writer;
        for (int i=0; i<10; i++)
        {
         item["key"] = i;
         arrayObj.append(item); //数组项添加
        }
        root["key1"] = "value1";
        root["key2"] = "value2";
        root["key3"] = 0x100;
        root["key4"] = true;
        root["key5"] = "中国人";
        item =root["key5"];
        root["array"] = arrayObj;
        std::cout << root.toStyledString();
        std::cout<<writer.write(root);
    }
     
    Jsconcpp反序列化例子
     
    void readDemo()
    {
        std::fstream file;
        file.open("test2.json"); //文件的字符集为utf8
        Json::Reader reader;
        Json::Value root;
        Json::Value item;
        reader.parse(file,root);
        item =root["key5"];  //key5的内容为"中国人"
        //读写utf8的内容
        QString str=QString::fromUtf8(item.asString().c_str());
        std::cout << str.toStdString()<<endl;
        
    }

     

    参考

    JsonCpp Documentation

    http://jsoncpp.sourceforge.net/index.html

  • 相关阅读:
    11. 优秀的基数统计算法--HyperLogLog
    10. Redis实现限流功能
    9. Redis中游标迭代器(scan)
    8. 使用Redis查询附近的人或商家
    7. Redis的管道技术
    6. Redis在内存用完时会怎么办?以及Redis如何处理已过期的数据?
    5. 详解Redis中的事务
    4. Redis的配置文件以及持久化
    2020.7.15 遇到一个bug
    A Review of Visual Tracking with Deep Learning
  • 原文地址:https://www.cnblogs.com/foxhengxing/p/2272020.html
Copyright © 2020-2023  润新知