2017-11-02 40 views
1

私はQStringをQJsonArrayに挿入する必要があります。問題は、文字列がそのまま挿入され、エスケープシーケンスが機能しないことです。ここQStringのエスケープシーケンスを解析するQt C++

QString fmt = QString("{\n \"%1\":\"%2\"\n}").arg(id,name); 
    QJsonValue qjv(fmt); 
    labellist.insert(lSize, qjv); 

、QSTRINGは、「ID」と「名前」(これらはまた、QStringのれる)の値が移入し、次いでqjsonarrayするために挿入されます。ここのlabellistはQJsonArrayです。 QStringへの入力は、例えば "55"と "ggg"となります。私は

qDebug().noquote() << fmt; 

ようQSTRINGを印刷するとき、それは私に

{ 
    "55":"ggg" 
    } 

を与えますが、私はlabellistにそれを挿入し、labellistを印刷する場合、それは与える:QJsonvaluesの

QJsonArray([{"121":"fuu"},{"122":"cat"},{"123":"dog"},"{\n \"55\":\"ggg\"\n}"]) 

形式を上記の配列内の配列は失われます。

フォーマットを維持してエスケープシーケンスを動作させるために文字列をデコードする方法を教えてもらえますか?

事前のおかげでたくさん... Kangkan

+0

なぜあなたは書式文字挿入していますか?あなたはそれをする必要はありません。だから、 'QJson *'クラスが対象です。彼らはあなたのためにそれをする。 – vahancho

答えて

1

私が使用するQJsonDocument静的メソッド、このようなfromJson()、:

QString fmt = QString("{\n \"%1\":\"%2\"\n}").arg("id","name"); 

    QJsonDocument doc = QJsonDocument::fromJson(fmt.toLocal8Bit()); 
    QJsonObject obj = doc.object(); 

    QJsonArray array; 
    array.append(obj); 

    qDebug() << array; 
+0

こんにちはみんな...ありがとう!出来た... –

関連する問題