QMap 개체가 있고이를 JSON으로 변환하고 싶습니다. 나는 이것을 어떻게 성취 할 것인지 혼란 스럽다.QMap을 JSON으로 변환
은 내가 JSON에 QMap 변환 QDataStream를 사용할 수 없다는 QT 문서를 읽을 수 있지만 QDataStream 파일 변환하는 것 같다,지도를 http://doc.qt.io/qt-4.8/datastreamformat.html
// c++
QMap<QString, int> myMap;
QMap 개체가 있고이를 JSON으로 변환하고 싶습니다. 나는 이것을 어떻게 성취 할 것인지 혼란 스럽다.QMap을 JSON으로 변환
은 내가 JSON에 QMap 변환 QDataStream를 사용할 수 없다는 QT 문서를 읽을 수 있지만 QDataStream 파일 변환하는 것 같다,지도를 http://doc.qt.io/qt-4.8/datastreamformat.html
// c++
QMap<QString, int> myMap;
이 자동으로 JSON 문서로 변환 할 수 있습니다 QVariantMap
에지도를 변환하는 가장 쉬운 것 :
QMap<QString, int> myMap;
QVariantMap vmap;
QMapIterator<QString, int> i(myMap);
while (i.hasNext()) {
i.next();
vmap.insert(i.key(), i.value());
}
QJsonDocument json = QJsonDocument::fromVariant(vmap);
같은 일이 QJsonObject::fromVariant()
정적 인 방법을 통해, 당신이 원하는 경우 QJsonObject
을 만드는 데 사용할 수 있습니다 . QJsonObject
당신이 변형 맵 단계로의 전환을 건너 뛰고 당신은지도 반복 단순히 수동으로 객체를 채울 수 있지만 :
QMap<QString, int> myMap;
QJsonObject json;
QMapIterator<QString, int> i(myMap);
while (i.hasNext()) {
i.next();
json.insert(i.key(), i.value());
}
JSON 트리 계층 구조를 지원하지 않습니다. 모든 노드는 하나의 레벨에 있습니다. –
@DmitrySazonov -지도가 트리가 아닙니다. – dtech
변형의지도가있을 때 변형은 값 또는 다른지도 일 수 있습니다. –
당신은 Qt는 5.5을 사용하는 경우를 이상이 QJsonDocument::fromVariant을 사용할 수 있습니다 QVariantMap으로 쉽게 변환 될 수 있습니다. 그렇지 않은 경우 QJson
QMAP 직렬화를 찾으려면 Serialization Qt 링크를 참조하십시오. 이 같은 QByteArray, 뭔가 생성자를 설정하려고 :
의QByteArray serializeMap(const QMap<QString, int>& map) {
QByteArray buffer;
QDataStream stream(&buffer, QIODevice::WriteOnly);
out << map;
return out;
}
이 쉽게 QString 또는 표준 : : 문자열로 변환 할 수있는 QByteArray 느릅 나무에지도를 직렬화합니다.
당신은'QFile'을 열을 인수로 새로운'QDataStream'를 구성하는 것을 사용 '<< "연산자를 사용하여 myMap을 직렬화하십시오. – rwols