Qt5解析json文件簡單示例(二)

下面將通過一個實例介紹如何解析json文件,json文件內容如下:

{
	"server_time":1585229373,
	"suggest_list":
	[
		{
			"item_type":0,
			"item_data":
			{
				"suggestion":"筆記本電腦 學生"
			}
		},
		{
			"item_type":0,
			"item_data":
			{
				"suggestion":"筆記本電腦 少女"
			}
		},
		{
			"item_type":0,
			"item_data":
			{
				"suggestion":"筆記本電腦超薄"
			}
		},
		{
			"item_type":0,
			"item_data":
			{
				"suggestion":"筆記本電腦遊戲本"
			}
		},
		{
			"item_type":0,
			"item_data":
			{
				"suggestion":"筆記本電腦貼紙"
			}
		},
		{
			"item_type":0,
			"item_data":
			{
				"suggestion":"筆記本電腦 打遊戲"
			}
		},
		{
			"item_type":0,
			"item_data":
			{
				"suggestion":"筆記本電腦鍵盤保護膜"
			}
		},
		{
			"item_type":0,
			"item_data":
			{
				"suggestion":"筆記本電腦 家用"
			}
		},
		{
			"item_type":0,
			"item_data":
			{
				"suggestion":"筆記本電腦蘋果"
			}
		},
		{
			"item_type":0,
			"item_data":
			{
				"suggestion":"筆記本電腦聯想"
			}
		}
	],
	"query":"筆記本電腦",
	"sug_sn":"760745463",
	"suggest":
	[
		"筆記本電腦 學生",
		"筆記本電腦 少女",
		"筆記本電腦超薄",
		"筆記本電腦遊戲本",
		"筆記本電腦貼紙",
		"筆記本電腦 打遊戲",
		"筆記本電腦鍵盤保護膜",
		"筆記本電腦 家用",
		"筆記本電腦蘋果",
		"筆記本電腦聯想"
	]
}

解析代碼如下:

//  解析json文件
    QFile file(":/data.json");
    file.open(QIODevice::ReadOnly | QIODevice::Text);
    QString jsonValue= file.readAll();
    file.close();

 //  解析JSON字符串
    QJsonParseError parseJsonErr;
    QJsonDocument document = QJsonDocument::fromJson(jsonValue.toUtf8(),&parseJsonErr);
    if(!(parseJsonErr.error == QJsonParseError::NoError))
    {
        qDebug()<< tr("解析json文件錯誤!");
        return;
    }
    QJsonObject jsonObject = document.object();
    qDebug()<< "server_time =" << jsonObject["server_time"].toInt();

    if(jsonObject.contains(QStringLiteral("suggest_list")))
    {
        QJsonValue suggest_listValue = jsonObject.value(QStringLiteral("suggest_list"));
        if(suggest_listValue.isArray())
        {
            QJsonArray array = suggest_listValue.toArray();
            for(int i = 0; i < array.size(); i++)
            {
                QJsonObject itemObject = array.at(i).toObject();
                if(itemObject.contains(QStringLiteral("item_type")))
                {
                    QJsonValue itemTypeValue = itemObject.value(QStringLiteral("item_type"));
                    QJsonObject itemTypeObject = itemTypeValue.toObject();
                    qDebug()<< "item_type = " << itemTypeObject["item_type"].toInt();
                }

                if(itemObject.contains(QStringLiteral("item_data")))
                {
                    QJsonValue itemDataValue = itemObject.value(QStringLiteral("item_data"));
                    QJsonObject itemDataObject = itemDataValue.toObject();
                    qDebug()<< "suggestion =" << itemDataObject["suggestion"].toString();
                }
            }
        }
    }

    qDebug()<< "query =" << jsonObject["query"].toString();
    qDebug()<< "sug_sn =" << jsonObject["sug_sn"].toString();
    if(jsonObject.contains(QStringLiteral("suggest")))
    {
        QJsonArray subArray = jsonObject.value(QStringLiteral("suggest")).toArray();
        for(int i = 0; i < subArray.size(); i++)
        {
            qDebug() << subArray.at(i).toString();
        }
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章