2017-11-02 13 views
1

QJsonArray에 삽입해야하는 QString이 있습니다. 문제는 문자열이 그대로 삽입되어 있으며 이스케이프 시퀀스가 ​​작동하지 않는다는 것입니다.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

안녕 얘들 아 ... 고마워 !! 그것은 효과가 ... –