使用Qt实现json数据的格式检测并序列化输出 Qt5.4.0环境

问题:

使用 Qt 实现 JSON 数据的格式检测,并输出各个键值


代码:

widget.h

cpp 复制代码
#include <QWidget>
#include <QJsonDocument> /*序列化 反序列化(F1查看帮助文档)*/
#include <QJsonObject> /*利用对象代表了一段json数据*/
#include <QJsonArray> /*相当于QJsonObject的子节点*/
#include <QJsonValue>
#include <QDebug>

widget.c

cpp 复制代码
void Widget::on_pushButton_clicked()
{
    QString json_string = ui->textEdit->toPlainText(); /*获取输入的字符串*/
    QJsonDocument doc = QJsonDocument::fromJson(json_string.toUtf8());
    if(doc.isObject()){
        //true
        ui->label->setText("正确的json格式");
        ui->label->setStyleSheet("background-color : rgb(153, 153, 153);\
                                                    color : rgb(50,255,50);");
    }
    else{
        // false
        ui->label->setText("错误的json格式");
        ui->label->setStyleSheet("background-color : rgb(153, 153, 153);\
                                                    color : rgb(255,50,50);");
        return;
    }
    QJsonObject json = doc.object();
    /*无论是序列化还是反序列化都是利用QJsonObject的[ ]运算符重载方法来实现*/
    QJsonValue name = json["name"];
    qDebug()<<name;

    /*从本质上来讲,QJsonObject就是一个存储QJsonValue数据的容器*/
    for(QJsonValue v : json){/*遍历容器(需在pro文件中添加C++11语法)*/
        qDebug()<<v; /*输出*/
    }
}

widget.ui


输出:

相关推荐
不想写代码的星星3 小时前
std::function 详解:用法、原理与现代 C++ 最佳实践
c++
Felix_One21 小时前
Qt 串口通信避坑指南:QSerialPort 的 5 个常见问题
qt
樱木Plus2 天前
深拷贝(Deep Copy)和浅拷贝(Shallow Copy)
c++
blasit4 天前
笔记:Qt C++建立子线程做一个socket TCP常连接通信
c++·qt·tcp/ip
肆忆_5 天前
# 用 5 个问题学懂 C++ 虚函数(入门级)
c++
不想写代码的星星5 天前
虚函数表:C++ 多态背后的那个男人
c++
端平入洛7 天前
delete又未完全delete
c++
端平入洛8 天前
auto有时不auto
c++
哇哈哈20219 天前
信号量和信号
linux·c++
多恩Stone9 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc