在QT中使用JSON
在QT中使用JSON数据包其实很简单
1. QT中如何使用JSON
JSON数据包一般有两种形式,一种是对象,一种是数组。用大括号 {} 扩起来的叫对象,用中括号 [] 扩起来的叫数组。
-
如何创建对象
添加头文件创建对象
QJsonObject rectJson; rectJson.insert("name","张三");//填充对象 rectJson.insert("age",30);//填充对象
-
如何创建数组
添加头文件创建数组
QJsonArray rectJson; rectJson.append("贝贝"); //填充数组 rectJson.append("晶晶"); //填充数组 rectJson.append("欢欢"); //填充数组 rectJson.append("迎迎"); //填充数组 rectJson.append("妮妮"); //填充数组
写一个稍微复杂点的JSON数据包
QJsonObject rectJson; //填充主对象 rectJson.insert("地点","中国"); QJsonObject rectData; //填充二级对象 rectData.insert("具体地点","北京"); rectData.insert("时间","2008"); QJsonArray rectArray; //填充数组 rectArray.append("贝贝"); rectArray.append("晶晶"); rectArray.append("欢欢"); rectArray.append("迎迎"); rectArray.append("妮妮"); rectData.insert("福娃",rectArray); //将数组加入二级对象中 rectJson.insert("奥运",rectData); //将二级对象加入主对象中
结果
2. JSON和Qstring之间的转换
- JSON 转成 QString
QString QJsonToQString(const QJsonObject& jsonObject) { return QString(QJsonDocument(jsonObject).toJson()); }
- QString 转成 JSON
QJsonObject QStringToQJson(const QString jsonString) { QTextCodec *tc = QTextCodec::codecForName("UTF-8"); QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonString.toUtf8().data()); QJsonObject jsonObject = jsonDocument.object(); return jsonObject; }