C++ 如何从QString初始化QJsonObject

C++ 如何从QString初始化QJsonObject,c++,json,qt,C++,Json,Qt,我是Qt新手,我想做一个非常简单的操作: 我必须获得以下JSonObject: { "Record1" : "830957 ", "Properties" : [{ "Corporate ID" : "3859043 ", "Name" : "John Doe ", "Function" : "Power Speaker ", "Bonus Points" : ["10 ",

我是Qt新手,我想做一个非常简单的操作: 我必须获得以下JSonObject:

{
    "Record1" : "830957 ",
    "Properties" :
    [{
            "Corporate ID" : "3859043 ",
            "Name" : "John Doe ",
            "Function" : "Power Speaker ",
            "Bonus Points" : ["10 ", "45", "56 ", "34", "56", "10 ", "45", "56 ", "34", "56", "10 ", "45", "56 ", "34", "56", "10 ", "45", "56 ", "34", "56", "10 ", "45", "56 ", "34", "56 ", "10", "45 ", "56", "34 ", "56", "45"]
        }
    ]
}
QJsonObject ObjectFromString(const QString& in)
{
    QJsonValue val(in);
    return val.toObject();
}
JSon已使用以下语法和有效性检查器进行检查:并被发现有效

我为此使用了字符串的QJsonValue初始化,并将其转换为QJSonObject:

{
    "Record1" : "830957 ",
    "Properties" :
    [{
            "Corporate ID" : "3859043 ",
            "Name" : "John Doe ",
            "Function" : "Power Speaker ",
            "Bonus Points" : ["10 ", "45", "56 ", "34", "56", "10 ", "45", "56 ", "34", "56", "10 ", "45", "56 ", "34", "56", "10 ", "45", "56 ", "34", "56", "10 ", "45", "56 ", "34", "56 ", "10", "45 ", "56", "34 ", "56", "45"]
        }
    ]
}
QJsonObject ObjectFromString(const QString& in)
{
    QJsonValue val(in);
    return val.toObject();
}
我正在加载从文件粘贴的JSon:

QString path = "C:/Temp";
QFile *file = new QFile(path + "/" + "Input.txt");
file->open(QIODevice::ReadOnly | QFile::Text);
QTextStream in(file);
QString text = in.readAll();
file->close();

qDebug() << text;
QJsonObject obj = ObjectFromString(text);
qDebug() <<obj;
QString path=“C:/Temp”;
QFile*文件=新QFile(路径+“/”+“Input.txt”);
文件->打开(QIODevice::ReadOnly | QFile::Text);
QTextStream(文件);
QString text=in.readAll();
文件->关闭();
qDebug()使用

如果你想要

QJsonObject ObjectFromString(const-QString&in)
{
QJsonObject对象;
QJsonDocument doc=QJsonDocument::fromJson(in.toUtf8());
//检查文件的有效性
如果(!doc.isNull())
{
if(doc.isObject())
{
obj=doc.object();
}
其他的
{

qDebug()您必须遵循此步骤

  • 首先将Qstring转换为QByteArray
  • 将QByteArray转换为QJsonDocument
  • 将QJsonDocument转换为QJsonObject
  • QString str=“{\'name\':\'John\'”;
    QByteArray br=str.toUtf8();
    QJsonDocument doc=QJsonDocument::fromJson(br);
    QJsonObject obj=doc.object();
    QString name=obj[“name”].toString();
    
    qDebug()谢谢@Merlin069!我想这是进行转换的方法,但到目前为止,文档未通过检查,整个函数返回一个未初始化的空对象。您是否尝试过该函数?如果它未能找到作为对象的文档,则输入字符串的格式不符合JSON。根据JSON,它是有效的。使用QJsonDocument::fromJson,而不是fromBinaryData-已更新answer@EthanKeller,检查QJsonDocument的拼写!
    QString str = "{\"name\" : \"John\" }";
    
    QByteArray br = str.toUtf8();
    
    QJsonDocument doc = QJsonDocument::fromJson(br);
    
    QJsonObject obj = doc.object();
    
    QString name = obj["name"].toString();
    qDebug() << name;