文档出现乱码怎么回事?(文档为什么突然乱码了)
803
2022-05-29
开发环境 Qt5.5.1、Qt Creator 3.5.1
常用的JSON库
QJsonDocument有效解析后的文档可以使用!iSNull()判断。使用isArray()和isObject()来判断是否包含一个数组或对象。文档中包含的数组或对象可以使用array()或object()进行检索,然后读取或操纵。
代码如下:
#include
#include
#include
#include
//生成Json
QString generateJsonStr() {
QJsonObject jsonObj;
jsonObj.insert("name", "chy龙神");
jsonObj.insert("age", 24);
jsonObj.insert("man", true);
QJsonDocument document;
document.setObject(jsonObj);
//格式化方式有2种: Compact(压紧)、Indented(缩进排印的,该方法解析出的QJsonValue会带\n)
QByteArray byteArr = document.toJson(QJsonDocument::Compact);
QString jsonStr(byteArr);
qDebug()<<"generateJsonStr: "< return byteArr; } //解析Json void parseJsonStr(QString jsonStr) { QJsonParseError jsonParseError; QJsonDocument document = QJsonDocument::fromJson(jsonStr.toUtf8(), &jsonParseError); if(jsonParseError.error == QJsonParseError::NoError) { //isObject()来判断是否包含一个数组或对象 if(document.isObject()) { QJsonObject jsonObj = document.object(); if(jsonObj.contains("name")) { QJsonValue nameValue = jsonObj.take("name"); //isXXX有7种类型: isArray、isBool、isDouble、isNull、isObject、isString、isUndefined if(nameValue.isString()) { //toXXX有7中类型toArray、toBool、toDouble、toInt、toObject、toString、toVariant qDebug()<<"parseJsonStr(string name): "< } } if(jsonObj.contains("age")) { QJsonValue ageValue = jsonObj.take("age"); //isDouble(包括int、float、double等数值类型) if(ageValue.isDouble()) { qDebug()<<"parseJsonStr(int age): "< } } if(jsonObj.contains("man")) { QJsonValue manValue = jsonObj.take("man"); //isDouble(包括int、float、double等数值类型) if(manValue.isBool()) { qDebug()<<"parseJsonStr(bool man): "< } } } } else { qDebug()<<"parseJsonStr: jsonParseError("< } } //生成JsonArray QString generateJsonArrayStr() { QJsonArray jsonArray; jsonArray.insert(0, QString("chy龙神")); jsonArray.insert(0, 24); jsonArray.insert(2, true); QJsonDocument document; document.setArray(jsonArray); QByteArray byteArray = document.toJson(QJsonDocument::Compact); QString jsonArrayStr(byteArray); qDebug()<<"generateJsonArrayStr: "< return jsonArrayStr; } //解析JsonArray void parseJsonArrayStr(QString jsonArrayStr) { QJsonParseError jsonParseError; QJsonDocument document = document.fromJson(jsonArrayStr.toUtf8(), &jsonParseError); if(jsonParseError.error == QJsonParseError::NoError) { if(document.isArray()) { QJsonArray jsonArray = document.array(); QString str; for(int i=0;i QJsonValue value = jsonArray.at(i); //注意:这里只有是string类型的才能用toSring输出,如果其他类型用toString会输出空串 if(value.isString()) { str.append(value.toString()); } else if(value.isDouble()) { str.append(QString::number(value.toDouble())); } else if(value.isBool()) { str.append(value.toBool()); } str.append(", "); } qDebug()<<"parseJsonArrayStr: "< } } else { qDebug()<<"parseJsonArrayStr: jsonParseError("< } } int main(int argc, char *argv[]) { QString jsonStr = generateJsonStr(); parseJsonStr(jsonStr); QString jsonArrayStr = generateJsonArrayStr(); parseJsonArrayStr(jsonArrayStr); return 0; } JSON Qt
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。