例子分析:
代码:
Json文件
{
"SkinColorConfig": {
"text_color_type_1": "224,231,250,255",
"text_color_type_2": "162, 171, 195,255",
"m_bubblewin_border_color": "48, 54, 66, 255",
"m_bubblewin_line_color":"54, 63, 82, 255"
}
}
解析代码:
//将一个json文件的路径转换为QJsonDocument
QJsonParseError parseJsonErr;
QJsonDocument document = QJsonDocument::fromJson(value.toUtf8(), &parseJsonErr);
if (!(parseJsonErr.error == QJsonParseError::NoError)) {
//解析失败
Q_ASSERT(0);
return;
}
//将QJsonDocument 转换为一个QObject对象
QJsonObject jsonObject = document.object();
//是否包含关键字
if (jsonObject.contains("SkinColorConfig")) {
QJsonValue jsonValue = jsonObject.value("SkinColorConfig");
qDebug()<<jsonValue.type();
QJsonObject jsonObj = jsonValue.toObject();
main_color = jsonObj["main_color"].toString();
green_color = jsonObj["green_color"].toString();
orange_color = jsonObj["orange_color"].toString();
yellow_color = jsonObj["yellow_color"].toString();
}
解析array
写入代码
和上面不太一样 类型上面
总结下:
一层一层获取value,查看下value的类型,是QJsonObject 就再获取value,不是QJsonObject ,就根据类型获取对应的数值即可。