zoukankan      html  css  js  c++  java
  • Qt json使用

    JSON 6 种基本数据类型

    QJsonValue::Bool
    QJsonValue::Double
    QJsonValue::String
    QJsonValue::Array
    QJsonValue::Object
    QJsonValue::Null

    JSON 常用类

    QJsonDocument //JSON 文档
    QJsonArray //JSON 数组
    QJsonObject //JSON 对象
    QJsonParseError //JSON 错误

    JSON 对象

    {
        "name": "admin",
        "age": 30
    }

    构建

    //构建 JSON 对象
    QJsonObject json;
    json.insert("name", "admin");
    json.insert("age", 30);
    
    //构建 JSON 文档
    QJsonDocument document;
    document.setObject(json);
    QByteArray byteArray = document.toJson(QJsonDocument::Compact);

    解析

    QJsonParseError jsonError;
    QJsonDocument doucment = QJsonDocument::fromJson(byteArray, &jsonError);  // 转化为 JSON 文档
    if (!doucment.isNull() && (jsonError.error == QJsonParseError::NoError)) {  // 解析未发生错误
        if (doucment.isObject()) { // JSON 文档为对象
            QJsonObject object = doucment.object();  // 转化为对象
            if (object.contains("name")) {  // 包含指定的 key
                QJsonValue value = object.value("name");  // 获取指定 key 对应的 value
                if (value.isString()) {  // 判断 value 是否为字符串
                    QString strName = value.toString();  // 将 value 转化为字符串
                    qDebug() << "name : " << strName;
                }
            }
            if (object.contains("age")) { //key判断无先后顺序
                QJsonValue value = object.value("age");
                if (value.isDouble()) {
                    int age = value.toVariant().toInt();
                    qDebug() << "age : " << age;
                }
            }
        }
    }

    JSON 数组

    [
        "admin",
        30,
    ]

    构建

    // 构建 JSON 数组
    QJsonArray json;
    json.append("admin");
    json.append(30);
    
    // 构建 JSON 文档
    QJsonDocument document;
    document.setArray(json);
    QByteArray byteArray = document.toJson(QJsonDocument::Compact);

    解析

    QJsonParseError jsonError;
    QJsonDocument doucment = QJsonDocument::fromJson(byteArray, &jsonError);
    if (!doucment.isNull() && (jsonError.error == QJsonParseError::NoError)) {
        if (doucment.isArray()) {
            QJsonArray array = doucment.array();
            int size = array.size();  // 获取数组大小
            for (int i = 0; i < size; i++) {  // 遍历数组
                QJsonValue value = array.at(i);
                if (value.type() == QJsonValue::String) {
                    QString strName = value.toString();
                    qDebug() << strName;
                }
                if (value.type() == QJsonValue::Double) {
                    double age = value.toDouble();
                    qDebug() << age;
                }
            }
        }
    }
  • 相关阅读:
    《算法导论》第二章笔记
    Python实现websocket之Django Channel实时推送与聊天
    zabbix设置钉钉报警
    ESXi安装报错,No network adapters were detected...
    supervisor指南
    Flask入门到放弃(五)—— 蓝图
    Flask入门到放弃(四)—— 数据库
    Flask入门很轻松(三)—— 模板
    Flask入门很轻松 (二)
    Flask入门很轻松 (一)
  • 原文地址:https://www.cnblogs.com/zhangxuechao/p/11709363.html
Copyright © 2011-2022 走看看