QT:如何从服务器替换JSON中的数字(开始,结束)

时间:2016-10-29 12:56:41

标签: c++ arrays json qt qt-creator

这就是我的JSON文件的样子。如您所见,start_x,start_y和end_x,end_y,degree_of_rotation是一个数字。

{
    "ID" : "ROLL1",
"action" : "start",
  "zone" :
    {
        "start_x" : 0,
        "start_y" : 4,

        "end_x" : 10,
        "end_y" : 5,

    "motion" :
    {
        "motion_type": "xxxxxx",
        "degree_of_rotation": 30,
        "rotation_direction": "yyyyyy",
        "linear_direction": "+ve"
    }
    }
}

如何从服务器替换并保存JSON中的数字?目前,这就是我所拥有的。 Qt5有一个新的JSON解析器,我想使用它。问题在于它不清楚函数的作用

void JsonFileread::Json_File_Function()
{
    try
    {
        qDebug() <<"file reading";

        file.setFileName("/home/JSON/jsonfile.js");   
        file.open(QIODevice::ReadOnly | QIODevice::Text);

        QFileDevice::FileError err = QFileDevice::NoError;

        if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
        {
            qDebug() <<"Could not open file : "<<file.fileName() <<"for reading :"<<file.errorString()<<endl;
            errMsg =file.errorString();
            err =file.error();
            cout<<"err : "<<err<<endl;
        }

        settings = file.readAll(); 

        if (file.error() != QFile::NoError) {
               qDebug() << QString("Failed to read from file %1, error: %2").arg(file.fileName()).arg(file.errorString());
           }

        if (settings.isEmpty()) {
                qDebug() << "No data was currently available for reading from file" << file.fileName();
            }

        file.close();

        object = EchoClient::jsonstringflag;

        QJsonDocument sd = QJsonDocument::fromJson(settings.toUtf8()); 
        QJsonObject sett2 = sd.object(); 

        QJsonValue mainid = sett2["ID"];
        mainid = mainid.toString();

        QJsonValue action = sett2["action"];
        actionstring = action.toString();

        QJsonValue value = sett2.value(QString("zone")); 
        QJsonObject item = value.toObject();

        QJsonValue startx = item["start_x"]; 
        startvaluex = startx.toInt();

        QJsonValue starty = item["start_y"];
        startvaluey = starty.toInt();

        QJsonValue endx = item["end_x"]; 
        endvaluex = endx.toInt();

        xendvaluestring = endx.toString();
        qWarning() << endvaluex<<endl;

        QJsonValue endy = item["end_y"]; 
        endvaluey = endy.toInt();

        yendvaluestring = endy.toString();
        qWarning() << endvaluey<<endl;

        QJsonValue motion = item.value(QString("motion"));
        QJsonObject motion_object = motion.toObject();

        QJsonValue motiontype = motion_object["motion_type"];
        motiontypestring = motiontype.toString();

        QJsonValue directionlinear = motion_object["linear_direction"];
        lineardirection = directionlinear.toString();

        QJsonValue rotatingangle = motion_object["degree_of_rotation"];
        angleofrotation = rotatingangle.toInt();
    }

    catch (QJsonParseError error)
        {
            qDebug() <<  error.errorString();
        }
    catch(...)
        {
            qDebug() <<  "due to some other error";
        }
}

帮助解决问题

1 个答案:

答案 0 :(得分:0)

您可以写一个QJsonObject非常类似于您阅读其属性的方式

QJsonObject obj;
obj["key"] = value;

构建QJsonObject树后,在QJsonDocument上设置顶级元素,并使用它生成JSON内容。