qt json解析

1.json概述

http://baike.baidu.com/link?url=3P2eXrMR413S9j6eSVtvJCUOfNHS5TAWM_TuySi5NG5fLr_lU5kqsQD0A1LIL7KH4hKe6SKSnwrz09SCNS2RKK

百度百科很详细了

2.json解析

一般的json很好解析,如果是嵌套的json数据刚接触qt的可能会感觉有点麻烦  下面是我使用qt5.4解析json的各个类型的实例

 假设我们的json数据为 

        QString alljsffondata=QString("{"

                     "\"CityId\":\"盐城\","
                     "\"EmployeeId\":1618,"
                     " \"FangInfo\":{"
                     " \"ef_bz\":null,"
                     " \"ef_cq\":\"70\","
                     " \"ef_cx\":\"南\","
                     "\"ef_dj\":0,"
                     "\"ef_dy\":null,"
                     "\"ef_dz\":null,"
                     "\"ef_fl\":\"2005\","
                     "\"ef_fwss\":\",\","
                     "\"ef_fx1\":1,"
                     " \"ef_fx2\":1,"
                     "\"ef_fx3\":1,"
                     " \"ef_fx4\":1,"
                     " \"ef_fx5\":1,"
                     "\"ef_fyzt\":null,"
                     "\"ef_jtqk\":null,"
                     "\"ef_jzjg\":null,"
                     "\"ef_jzmj\":60,"
                     " \"ef_kffs\":\"\","
                     " \"ef_lc1\":2,"
                     " \"ef_lc2\":7,"
                     " \"ef_lxdh\":null,"
                     "\"ef_mail\":null,"
                     " \"ef_mh\":null,"
                     " \"ef_sjhm\":null,"
                     " \"ef_symj\":null,"
                     " \"ef_wydz\":\"北环附近\","
                     " \"ef_wyglf\":0,"
                     " \"ef_wyglfdw\":null,"
                     "\"ef_wylx\":\"住宅\","
                     "\"ef_wymc\":\"安军成\","
                     "\"ef_wyyt\":null,"
                     "\"ef_xsdj\":10000,"
                     " \"ef_xszj\":60,"
                     "\"ef_xszjdw\":null,"
                     " \"ef_xz\":null,"
                     "\"ef_yj\":null,"
                     "\"ef_yzmc\":\"宁虎\","
                     "\"ef_zbhj\":null,"
                     "\"ef_zj\":null,"
                     "\"ef_zxqk\":\"毛坯\","
                     " \"pq\":\"null\","
                     "\"qx\":\"金水区\","
                     "\"fy_desc\":\"房源特色: 1:地段好、位置佳,房子升值空间大!周边商场、超市、医疗、教育 、休闲娱乐健身、公交交通等设施齐全,交通便利,出行方便! 2:小区发展成熟,绿化率高,空气清新,特别适合居住!房子楼层低 ,价位低,户型好,南北通透,通风性好,楼间距大,采光好! 3:带20平米小院!欢迎来电咨询、更多优质房源等着您!也许这不是 适合您的房子,但是我会通过我的努力为您找到更满意的房子!\","
                     "\"fy_title\":\"安军成毛坯有天然气无税1房出售\","
                     "\"hxpics\":\"http://pic2.58cdn.com.cn/p1/big/n_v1bkuyfvjh35nvpbhbjbxq.jpg,http://pic1.58cdn.com.cn/p1/big/n_v1bl2lwwje35nvpf5nlvpa.jpg,http://pic1.58cdn.com.cn/p1/big/n_v1bl2lwxt34bnvplkxjjaa.jpg,http://pic2.58cdn.com.cn/p1/big/n_v1bl2lwtl44bnvpevvyzja.jpg,http://pic2.58cdn.com.cn/p1/big/n_v1bj3gzrzukwdfom4axf3a.jpg,http://pic2.58cdn.com.cn/p1/big/n_v1bl2lwtjukwdfpi4qlbua.jpg,http://pic1.58cdn.com.cn/p1/big/n_v1bl2lwxr5kwdfpjwwsrua.jpg\","
                     " \"qf_city\":0,"
                     "\"snpics\":null,"
                     "\"xqpics\":\"http://pic1.58cdn.com.cn/p1/big/n_v1bl2lwwje35nvpf5nlvpa.jpg\""
                     "},"
                     "\"SendToWebSite\":["
                     "{"
                     "\"Pass\":\"132716596200\","
                     "\"ShowMobile\":\"17760709945\","
                     "\"ShowName\":\"张三丰\","
                     "\"Tid\":1,"
                     "\"ToWebSiteId\":\"D58\","
                     "\"UserName\":\"17760709945\""
                     "},"
                     "{"
                     "\"Pass\":\"qq123456\","
                     "\"ShowMobile\":\"13333841711\","
                     "\"ShowName\":\"张二丰\","
                     "\"Tid\":1,"
                     "\"ToWebSiteId\":\"D58\","
                     "\"UserName\":\"13333841711\""
                     "},"
                     "{"
                     "\"Pass\":\"zs123456\","
                     "\"ShowMobile\":\"13333848785\","
                     "\"ShowName\":\"张一丰\","
                     "\"Tid\":1,"
                     "\"ToWebSiteId\":\"D58\","
                     "\"UserName\":\"13333848785\""
                     "}"
                     "],"
                     "\"Type\":\"s\""
                     "}"
                     );
  1.一般无嵌套数据解析 eg: 解析cityid

QJsonParseError error1;//用来判断json数据格式是否有错误

    QJsonDocument jsonDocument1 = QJsonDocument::fromJson(alljsondata.toUtf8(), &error1);
    if (error1.error == QJsonParseError::NoError) {
        if (jsonDocument1.isObject()){
            QVariantMap result1 = jsonDocument1.toVariant().toMap();
           qDebug() << "Type:" << result1[name].toString();
        }
    } else {
        qDebug() << "解析出错!"<<error1.errorString();//boomshakalaka
        return 0;
    }
2.嵌套 { } 的解析 eg fanginfo


QJsonParseError error1;

    QJsonDocument jsonDocument1 = QJsonDocument::fromJson(alljsondata.toUtf8(), &error1);
    if (error1.error == QJsonParseError::NoError)
    {
        if (jsonDocument1.isObject())
        {
            QVariantMap result1 = jsonDocument1.toVariant().toMap();
            //信息解析!!!!({}x形式的。tomap) []形式的转为tolist
            QVariantMap FangInfoMap = result1["FangInfo"].toMap();           
            qDebug() << "ef_yzmc:" << FangInfoMap["ef_yzmc"].toString();           
        }
    }
    else
    {
        qDebug() <<"解析出错!"<<error1.errorString();
        return 0;
    }

3.嵌套【  { }  】的解析 eg

SendToWebSite 中的数据
QJsonParseError error1;
    QJsonDocument jsonDocument1 = QJsonDocument::fromJson(alljsondata.toUtf8(), &error1);
    if (error1.error == QJsonParseError::NoError)
    {
        if (jsonDocument1.isObject())
        {
            QVariantMap result1 = jsonDocument1.toVariant().toMap();
            //用户信息解析!!
            qDebug() <<"发布到网站的个数:"<<result1["SendToWebSite"].toList().size();
            //发布
            foreach (QVariant SendToWebSite, result1["SendToWebSite"].toList())
            {
                //来个map
                //qDebug() << "\r\n" << SendToWebSite.toMap();
                QVariantMap userdata = SendToWebSite.toMap();
               qDebug() << "Pass:" << userdata["Pass"].toString()
               alldatafromweb[1]=userdata["Pass"];
                allwebtosend<<alldatafromweb;//QList<QVariantList> allwebtosend 可以用来存放
ToWebSite中的{}里的数据 
              
            }
        }
    }
   
多个【】或者{}的嵌套解析 嵌套其实也是用同样的方法的 
({}x形式的。tomap) []形式的转为tolist
不断实例化 然后解析


 

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值