当先锋百科网

首页 1 2 3 4 5 6 7

在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;
    }