QT中json文件的生成与保存

常用的json类:

(1)QJsonDocument 类用于读和写 JSON 文档。一个 JSON 文档可以使用 QJsonDocument::fromJson() 从基于文本的表示转化为 QJsonDocument, toJson() 则可以反向转化为文本。

(2)QJsonArray 类封装了一个 JSON 数组。JSON 数组是值的列表。列表可以被操作,通过从数组中插入和删除 QJsonValue 。通过 insert() 在指定索引处插入值,removeAt() 来删除指定索引的值。

(3)QJsonObject 类封装了一个 JSON 对象。一个 JSON 对象是一个“key/value 对”列表,key 是独一无二的字符串,value 由一个 QJsonValue 表示。通过 insert() 插入“key/value 对”, remove() 删除指定的 key。

(4)QJsonValue 类封装了一个值。JSON 中的值有 6 种基本数据类型:bool(QJsonValue::Bool)、double(QJsonValue::Double)、string(QJsonValue::String)、array(QJsonValue::Array)、object(QJsonValue::Object)、null(QJsonValue::Null)。另外QJsonValue 有一个特殊的标记来表示未定义的值,可以使用 isUndefined() 查询。

(5)QJsonParseError 类用于在 JSON 解析中报告错误。

实例:解析一个写好的json文件,并将解析结果写在一个值得的文本文件中。

//json文件
{
    "count": 100,
    "result": [
        "execute commond0",
        "execute commond1",
        "execute commond2",
        "execute commond3",
        "execute commond4",
        "execute commond5",
        "execute commond6",
        "execute commond7",
        "execute commond8",
        "execute commond9",
        "execute commond10"
    ]
}
//qt中解析json的代码
#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

using namespace std;

void writelog(QString log);

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
	//指定json文件
    QFile file("E:\\gitlab\\git\\Mzhao\\zm\\1.json");
	//使用QIODevice::Text该选项后:
	//对于读:end-of-line结束符被转译为'\n';
	//对于写:end-of-line结束符被转译本地编码方式对应的字符。比如,在Win32下,是'\r\n'
    if(!file.open(QFile::ReadOnly | QIODevice::Text))
    {
        qDebug()<<"json opened fail";
        return false;
    }
	//
    QString  val= file.readAll();
    file.close();

    QString out;
    QJsonObject object;
    QJsonArray result_array;

    qDebug()<< "######start######";
	//QJsonParseError用于json解析中报告错误
    QJsonParseError jsonError;
   //将对应文件转化为json文档
    QJsonDocument Docu(QJsonDocument::fromJson(val.toUtf8(),&jsonError));

    if(jsonError.error != QJsonParseError::NoError)
    {
         qDebug()<<"json error...";
         return false;
    }
    if( Docu.isObject()) //JSON文档为对象
    {
		//转化为对象
         object =  Docu.object();
		 //包含指定的key
         if(object.contains("count"))
         {
              QJsonValue value = object.value("count");//获取key对应的value
              int count_val;
              if(value.isDouble())//判断value是否为double
                    count_val = value.toVariant().toInt();

              for(int i = 0;i < count_val;++i)
              {
                   qDebug() << "execute commond  "<< i <

参考博客:https://blog.csdn.net/liang19890820/article/details/52767153

你可能感兴趣的:(qt)