• 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);
            }
        }
    }
  • 相关阅读:
    docker容器使用不同IP
    java相关问题
    centos编译安装php7.4
    家庭服务器搭建并提供公网Http服务
    如何调试Vue3源码?
    《挖坑系列》—前言
    Dubbo 入门
    wordpress自定义菜单函数wp_nav_menu不输出li标签或删除li标签
    git学习记录2
    win10 安装IIS时报错,灾难性错误,错误代码:0x8000FFFF
  • 原文地址:https://www.cnblogs.com/xupeidong/p/9401235.html
Copyright © 2020-2023  润新知