编译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

相关文章:

  • 2021-08-07
  • 2022-03-04
  • 2021-09-03
  • 2022-12-23
  • 2021-09-21
  • 2022-12-23
猜你喜欢
  • 2021-09-04
  • 2022-12-23
  • 2022-03-03
  • 2022-12-23
  • 2021-12-05
相关资源
相似解决方案