Qt json 使用笔记难点是 中文编码,经常出现识别不是json文件的情况,导致不知道是代码错了,还是其他问题之间不断的切换思维。
所以有必要记录一个笔记,避免自己下次依旧有坑。
下面是我的测试 json文件,
[
{
"btnName": "中国",
"filePath": "",
"fileContent": ""
},
{
"btnName": "中国",
"filePath": "",
"fileContent": ""
}
]
步骤1. 从文件中读取,并判断是 jsonArry
QString sjsonMsg;
XdlUtil::readFileString("/doc/qmlCodeList/codeList.json", sjsonMsg);
QString tt = QString::fromLocal8Bit(sjsonMsg.toLocal8Bit());
QJsonDocument jdoc = QJsonDocument::fromJson(tt.toUtf8());
// QJsonObject info_arry = jdoc.object();
if(jdoc.isArray())
{
m_configJson = jdoc.array();
}
重点 json文件要保存成utf8
QString tt = QString::fromLocal8Bit(sjsonMsg.toLocal8Bit()); QJsonDocument jdoc = QJsonDocument::fromJson(tt.toUtf8());
这么写亲测是能很好的识别中文。
QJsonObject vv = m_configJson[0].toObject();
ui->pushButton->setText(vv["btnName"].toString());
转换思维也是有点绕的。大概路径我描述一下
jsonArry[0]--》jsonobject->jsonobject["key"]
以上思路可以很好的转换一套json文件。主要是编码问题的坑,帮大家避免的,其余都很基础