QT开发中文网

{\n \"TeacherName\": \"1\",\n \"class\": \"1\",\n \n \"exam\": \"1\",\n \"examScore\": \"60\",\n \"examTime\": \"\"\n}\n 我有这么一串QByteArray 怎么转成json对象

要将包含转义字符的 QByteArray 转换为 JSON 对象,你可以先将其转换为 QString,然后使用 Qt 的 QJsonDocument 类来解析这个字符串。以下是一个具体的示例:

示例代码

#include <QCoreApplication>
#include <QByteArray>
#include <QString>
#include <QJsonDocument>
#include <QJsonObject>
#include <QDebug>

int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);

    // 你的 QByteArray 字符串
    QByteArray jsonData = "{\n    \"TeacherName\": \"1\",\n    \"class\": \"1\",\n    \n    \"exam\": \"1\",\n    \"examScore\": \"60\",\n    \"examTime\": \"\"\n}\n";

    // 将 QByteArray 转换为 QString
    QString jsonString = QString::fromUtf8(jsonData);

    // 使用 QJsonDocument 来解析 JSON 字符串
    QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonString.toUtf8());

    // 检查是否成功解析
    if (jsonDoc.isNull()) {
        qWarning() << "Failed to create JSON doc.";
        return -1;
    }

    // 确保它是一个对象类型(可以根据需要选择数组等)
    if (!jsonDoc.isObject()) {
        qWarning() << "JSON is not an object.";
        return -1;
    }

    // 获取 JSON 对象
    QJsonObject jsonObj = jsonDoc.object();

    // 输出结果以验证内容
    qDebug() << "Teacher Name:" << jsonObj["TeacherName"].toString();
    qDebug() << "Class:" << jsonObj["class"].toString();
    qDebug() << "Exam:" << jsonObj["exam"].toString();
    qDebug() << "Exam Score:" << jsonObj["examScore"].toString();
    
   return a.exec();
}

说明

  1. QByteArray 创建 QString

    • 使用 QString::fromUtf8() 将字节数组转换为字符串。
  2. 解析 JSON

    • 使用 QJsonDocument::fromJson() 方法来尝试解析 JSON 字符串,并检查返回的文档是否为空,以确保解析成功。
  3. 处理 JSON 对象

    • 如果文档确实是一个对象,则你可以通过调用 .object() 方法来获取 QJsonObject,并从中访问各个字段。
  4. 输出结果

    • 使用 qDebug() 输出所需字段,以验证转换和解析是否正确。

请根据您的具体环境和需求调整代码。如果有其他问题,请随时提问!


内容由零声教学AI助手提供,问题来源于学员提问

目录导航
  • 示例代码
  • 说明
  • 本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
    转载请注明出处:https://qt.0voice.com/?id=12718

    分享:
    扫描分享到社交APP
    上一篇
    下一篇
    发表列表
    游客 游客
    此处应有掌声~
    评论列表

    还没有评论,快来说点什么吧~

    联系我们

    在线咨询: 点击这里给我发消息

    微信号:3007537140

    上班时间: 10:30-22:30

    关注我们
    x

    注册

    已经有帐号?