qt读取json文件

(1)JSON文件(config.json)


 
 
  1. {
  2. "autor": "yudabo",
  3. "staff":[
  4. { "name": "于大博1"},
  5. { "name": "于大博2"},
  6. { "name": "于大博3"},
  7. { "name": "于大博4"},
  8. { "name": "于大博5"},
  9. { "name": "于大博6"},
  10. { "name": "于大博7"},
  11. { "name": "于大博8"},
  12. { "name": "于大博9"},
  13. { "name": "于大博10"}
  14. ],
  15. "data": { "name": "yudabo" }
  16. }


(2)解析文件


 
 
  1. QFile file("config.json");
  2. file.open(QIODevice: :ReadOnly | QIODevice: :Text);
  3. QString value = file.readAll();
  4. file.close();
  5. QJsonParseError parseJsonErr;
  6. QJsonDocument document = QJsonDocument: :fromJson( value.toUtf8(), &parseJsonErr);
  7. if (! (parseJsonErr.error == QJsonParseError: :NoError)) {
  8. QMessageBox: :about(NULL, "提示", "配置文件错误!");
  9. return;
  10. }
  11. QJsonObject jsonObject = document. object();
  12. /*
  13. // autor字段
  14. qDebug()<< "jsonObject[autor]==" << jsonObject["autor"].toString();
  15. */
  16. // staff字段
  17. if (jsonObject.contains(QStringLiteral( "staff"))) {
  18. QJsonValue arrayValue = jsonObject. value(QStringLiteral( "staff"));
  19. if (arrayValue.isArray()) {
  20. QJsonArray array = arrayValue.toArray();
  21. for ( int i = 0; i < array.size(); i++) {
  22. QJsonValue nameArray = array.at(i);
  23. QJsonObject key = nameArray.toObject();
  24. qDebug() << "key[name]==" << key[ "name"].toString();
  25. }
  26. }
  27. }
  28. // data字段
  29. QJsonValue jsonDataValue = jsonObject. value(QStringLiteral( "data"));
  30. QJsonObject jsonData = jsonDataValue.toObject();
  31. qDebug()<< "jsonData [name]==" << jsonData [ "name"].toString();

补充json文件写入

在这里插入代码片`
	 QJsonObject obj;
     QJsonObject sub;
    sub.insert("ip",QJsonValue("192.168.0.1"));
     sub.insert("port",QJsonValue("8080"));
     obj.insert("server",QJsonValue(sub));
     //内存中的数据写到文件
     QJsonDocument doc(obj);
     //将json对象转换成字符串
     QByteArray data=doc.toJson();
     QFile file("temo.json");
     file.open(QIODevice::WriteOnly);
     file.write(data);
     file.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值