龙空技术网

Qt操作json文件

C加加Qt技术开发老杰 68

前言:

此时我们对“js对json数据的操作”大约比较看重,我们都需要了解一些“js对json数据的操作”的相关内容。那么小编也在网摘上搜集了一些有关“js对json数据的操作””的相关内容,希望各位老铁们能喜欢,咱们一起来学习一下吧!

json 数据

在Qt中常见的数据传输格式为 xml 与 json 这个两种,其中 xml 在1996年提出是一种出现时间相对较久的文件格式,与2002年提出的json相比,他可以标注数据的一些属性,并且可以直接被html识别。相比较来说json就是比较简洁,人的可读性更强。更适合用来传输数据。

json格式:

标准格式:

#JSON字符串{"name":"jobs"}#JSON布尔:必须小写的true和false{"bool":true}#JSON空:必须小写的null{"object":null}

示例:

{    "name" : "mil",    "age" : 15,    "language": ["zh", "eng"],    "course" : [{            "name" : 'math",            "score": 66    },{            "name" : "eng",            "score": 99    }]}

在Qt中 使用QJsonDocument读写json文件。

类说明

QJsonDocument

读写json文档

QJsonObject

封装Json对象

QJsonArry

封装json数组

QJosnValue

封装json值,int,flot,double,{},[]

QJsonObject

QJsonParseError

所选json处理过程中出现的错误

封装 json

void Widget::pkjson(){    QFile jsfile("../test_1.json");    // ---> 封装/保存 json    QJsonObject rootObj;    QJsonObject professionalObj;    professionalObj.insert("english", 4);    QJsonArray languageArr;    languageArr.append("c");    languageArr.append("c++");    rootObj.insert("name","milo");    rootObj.insert("age",80);    rootObj.insert("professional", professionalObj);    rootObj.insert("phone","milo");    rootObj.insert("language", languageArr);    rootObj.insert("hard","milo");    rootObj.insert("hot","milo");    QJsonDocument jdoc(rootObj);    // ---> 打开文件并向文件中添加内容    if(jsfile.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) {        QTextStream js(&jsfile);        js<< jdoc.toJson();        jsfile.close();    } else {        cout << "打开失败";    }}

解析 json

void Widget::exjson(){    // ---> 解包json    QFile jsfile("../test_1.json");    if(jsfile.open(QIODevice::ReadOnly)){        // ---> 设置解析报错        QJsonParseError err;        // ---> 解释json文件        QJsonDocument jsdoc = QJsonDocument::fromJson(jsfile.readAll(), &err);        if(err.error!=QJsonParseError::NoError){            // ---> 如果有报错            cout << "json 格式错误!";            return;        } else {            // ---> 读取根目录            QJsonObject rootObj = jsdoc.object();            // ---> 读取 key = name 的值            cout << rootObj.value("name").toString();            QJsonArray lanArr = rootObj.value("language").toArray();            cout << lanArr.at(0).toString() << lanArr.at(1).toString();            // ---> 判断key的类型 , 是arry 还是 obj            if(rootObj.value("professional").type() == QJsonValue::Object){                cout << "这个key的类型是 obj";            }        }        jsfile.close();    }}

标签: #js对json数据的操作 #js自定义对象 tojson #js 创建json数组