Qt读取JSON和XML数据

本文介绍了如何在Qt环境中使用QJSON库读取和处理JSON数据,包括解决编译问题和链接库的方法。同时,文章也提到了Qt中利用QDomDocument和QDomNode解析XML文件的基本操作。
摘要由CSDN通过智能技术生成

QJSON

JSON(JavaScript Object Notation)是一个轻量级的数据交换格式; 可以将数据以name/value的形式任意组合;

QJson 是一个基于Qt的库, 将JSON的数据map成name-QVariant的形式, 或者进行反相转换; 通过Q_PROPERTY还可以转换QObject类中的数据;

QJSON Source http://qjson.sourceforge.net/ (需要编译lib来link)


Build 测试时在Windows下进行, 所以我尝试用IDE的方式编译: 
1. 用QtCreator打开CMakeList.txt, 进行Configure; 
2. 生成了qjson项目, Build All 

Note 这里有个error, '_strtoui64' was not declared in this scope, 是作者在修VS2012的bug时introduce的, 只要找到json_scanner.cc, 把strtoll和strtoull两个宏注释掉就行;

3. 在Qt项目中引入QJSN的library, QJSON对QtCore有dependency.  e.g. LIBS += -L"PathToQJSONLib" -l"qjson"

Note 注意环境变量中的各种Qt版本, QJSON中的CMake会自动搜索任意的Qt Binary, 需要手动设置Qt路径, 否则会出现库版本不一致的问题; 

e.g. 格式: String必须用"" 包括起来, 使用"\"来转义字符;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
QString query( "{\"name\":\"newName\",\"size\":\"Godzilla\", \"price\":111.222}" );
//parse
     QByteArray json = query.toUtf8();
     QJson::Parser parser;
     bool  ok;
     QVariantMap result = parser.parse (json, &ok).toMap();
     if  (ok)
     {
         QHash< int , QByteArray> roleNames = item->roleNames();
         QHash< int , QByteArray>::iterator iter;
         for  (iter = roleNames.begin(); iter != roleNames.end(); ++iter)
         {
             if  (result.value(iter.value()).isValid())
                 item->setData(iter.key(), result.value(iter.value()));
             else
                 cout<< "no data"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值