zoukankan      html  css  js  c++  java
  • QT解析和组装json

    json这个小朋友熟悉又陌生,今天给同学们好好讲讲QT是如何使用json的,一句话:简单

    1、什么是json?

    A:json就是个<key,value>字符串

    ①一个json对象

    {"name":"xupeidong","age":"18"}
    

    ②一个json数组里面嵌套json对象

    [
    {"price": "1", "name": "1", "id": "1"}, 
    {"price": "2", "name": "2", "id": "2"}, 
    {"price": "3", "name": "3", "id": "3"}
    ]

    2、QT里面如何使用json

    #include <QJsonDocument>   //解析类,用于将json转换为QByteArrar,或从QByteArray解析出json
    #include <QJsonArray>   // 封装json数组:["1","2","3"]
    #include <QJsonObject>  // 封装json对象:{"name": "111","pass": 222}
    #include <QJsonParseError> //错误类

    ①json对象

    组装:

    QJsonObject json;
    json.insert("name", "111");
    json.insert("pass", 222);
    QJsonDocument doc;
    doc.setObject(json);
    QByteArray byte = document.toJson(QJsonDocument::Compact);
    

    解析:

    QJsonParseError error;
    QJsonDocument doc = QJsonDocument::fromJson(byte, &error); 
    if(error.error == QJsonParseError::NoError) 
    {  
        if(doc.isObject())  
        {  
            QJsonObject obj = doc.object(); 
            if(obj.contains("name"))  
        {
           QJsonValue value = obj.take("name");
           qDebug() << value.toString();
        }
        }
    }

    ②json数组

    组装:

    格式:"["000","111"]"
    QJsonArray json;
    json.insert(0, "000");
    json.insert(1, "111");
    QJsonDocument doc;
    doc.setArray(json);
    QByteArray byte = doc.toJson(QJsonDocument::Compact);
    还可以插入json对象:
    格式:"[{"0":"000"},{"1":"111"}]"
    QJsonArray json;
    QJsonObject obj;
    obj.insert("0","000");
    json.insert(0, obj);
    QJsonObject obj1;
    obj1.insert("1","111");
    json.insert(1, obj1);
    QJsonDocument doc;
    doc.setArray(json);
    QByteArray byte = doc.toJson(QJsonDocument::Compact);

    解析:

    QJsonParseError error;
    QJsonDocument doc = QJsonDocument::fromJson(byte, &error); 
    if(error.error == QJsonParseError::NoError) 
    {  
        if(doc.isArray())  
        {  
            QJsonArray array = doc.array(); 
            for(int i=0; i<array.size();i++)
            {
                QJsonValue value = array.at(i);
            }
        }
    }
  • 相关阅读:
    宋亡之后无中国,明亡之后无华夏——有多少人懂
    关于Verilog 中的for语句的探讨
    三种不同状态机写法
    异步复位和同步复位
    转载
    FIFO认识(一)
    Quartus II管脚批量分配文件(.tcl)格式
    mif文件C语言生成
    基于FPGA的HDMI显示设计(三)
    FPGA----只读存储器(ROM)
  • 原文地址:https://www.cnblogs.com/xupeidong/p/9401235.html
Copyright © 2011-2022 走看看