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

QT 使用jsoncpp的更多相关文章

  1. Qt jsoncpp 对象拷贝、删除、函数调用 demo

    /*************************************************************************************************** ...

  2. JsonCpp——json文件的解析

    定义: 官网: http://json.org/ 在线解析器:http://json.cn/ http://www.bejson.com/ JSON(JavaScript Object Notatio ...

  3. Qt 4.8.5 jsoncpp lib

    Qt jsoncpp lib 一.参考文档: . QtCreator动态编译jsoncpp完美支持x86和arm平台 http://www.linuxidc.com/Linux/2012-02/536 ...

  4. Qt学习日记篇-Qt中使用Curl和jsonCpp

    1.Qt中安装并使用jsonCPP库 1.1  官网下载.https://sourceforge.net/projects/jsoncpp/    解压文件得到 jsoncpp-src-0.5.0 文 ...

  5. QtCreator动态编译jsoncpp完美支持x86和arm平台

    如果是做嵌入式开发. 在Qt下支持JSon最好的办法,可能不是采用qjson这个库.QJson这个库的实例只提供了x86环境下的编译方法. Installing QJson-------------- ...

  6. Qt之JSON生成与解析

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December ...

  7. 【转载】Qt之JSON生成与解析

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December ...

  8. ubuntu安装Qt

    一.安装 卸载旧版本Qt,找到安装目录,例如:/home/likewei/Qt5.11.2,终端输入命令进入该目录,输入命令:./MaintenanceTool      进入图形画面卸载就行了 1. ...

  9. jsoncpp 0.5 ARM移植

    1.下载jsonapp 0.5 https://github.com/open-source-parsers/jsoncpp 2.编译 platform 没有包含 arm 平台,需要把源码提取出来,独 ...

随机推荐

  1. svn Q&A

    Q1:在svn commit的时候,会出现某某文件 is missing.这是因为此次提交时:远程repository中并没有该文件,而且本地repository也没有该文件. 具体原因: 1.可能因 ...

  2. WOJ -1204

    WOJ -1204 1 出现次数大于一半 那么就利用普通的堆栈的思想,如果删除两个不同的元素,原来的多数元素还是多数元素,所以采取按条件入栈的方法,如果和top元素相同则入栈,否则top--,此元素也 ...

  3. Spring总结

    此君也是使用过多时了,却从来没有系统的总结过 以下,弥补,盼不晚: Spring为什么是框架&容器 1.框架的原因: 其提供多个组件的搭建,和支持其他事务事件,符合框架定义 ps:什么是框架呢 ...

  4. opencv配置(2.49)

    转载自浅墨大神http://blog.csdn.net/poem_qianmo/article/details/19809337 OpenCV2.4.9和2.4.8的配置几乎一样,唯一的区别在下文中的 ...

  5. ExpandableListView二级列表

    package com.example.dajj; import android.os.Bundle;import android.app.Activity;import android.view.M ...

  6. UVA 572

    这是一道纯正的深度优先搜索题目. 题目要求在有多少个不同的块,而不同块的定义则是,一个块中的任意一点和l另一个块中的任意一点不会相连,而相连的定义则是 在横向.纵向和对角线上相连. #include& ...

  7. 在Swift中应用Grand Central Dispatch(下)

    在第一部分中, 你学到了并发,线程以及GCD的工作原理.通过使用dispatch_barrrier和dispatch_sync,你做到了让 PhotoManager单例在读写照片时是线程安全的.除此之 ...

  8. Java 报表之JFreeChart(第一讲)

    1.利用 JFreeChart 创建垂直柱状报表 package com.wcy.chart.bar; import javax.servlet.http.HttpSession; import or ...

  9. Learning to write a compiler

    http://stackoverflow.com/questions/1669/learning-to-write-a-compiler?rq=1 Big List of Resources: A N ...

  10. 11-Java 界面设计

    (一)Java界面设计概述 1.Java 界面设计的用途 2.AWT 简介 (1)Abstract Windows Toolkit 是最原始的工具包. 3.Swing 简介 4.SWT 简介 5.如何 ...