2 Star 5 Fork 5

AvenirTech 未来科技/MyPostman

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
EasyQJson.h 4.92 KB
一键复制 编辑 原始数据 按行查看 历史
吉法师 提交于 2020-06-20 13:58 . 修改bug
#ifndef EASYQJSON_H
#define EASYQJSON_H
#include<QFile>
#include<QJsonArray>
#include<QJsonObject>
#include<QJsonDocument>
#include<QJsonValue>
#include<QJsonParseError>
#include<QDebug>
namespace DJY{
class EasyQJson
{
public:
//读取json文件并且返回Json对象
QJsonObject readJsonFileReturnObject(QString filepath)
{
QJsonObject rootObj = {};
QFile file(filepath);
if(!file.open(QIODevice::ReadWrite))//打开文件
{
return rootObj;
}
//throw std::logical_error();
QByteArray all = file.readAll();
file.close();
QJsonParseError json_error;
QJsonDocument jsonDoc(QJsonDocument::fromJson(all,&json_error)); //读取json
rootObj = jsonDoc.object();
return rootObj;
}
//读取QJsonObject返回QString
QString readObjectReturnQString(QJsonObject object)
{
QString result = QString(QJsonDocument(object).toJson());
return result;
}
//读取QString返回QJsonObject
QJsonObject ReadQStringReturnObject(const QString jsonString){
QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonString.toLocal8Bit().data());
if( jsonDocument.isNull() ){
return {};
}
QJsonObject jsonObject = jsonDocument.object();
return jsonObject;
}
//提供JsonObject和键值,返回Json数组
QJsonArray readJsonObjectReturnArray(QJsonObject object, QString jsonkey)
{
QJsonValue value = object.value(jsonkey);
QJsonArray array = value.toArray();
return array;
}
//判断Json数组有没有对应的键
bool JsonArrayContain(QJsonArray array, QString jsonObject, QString target)
{
//传入了array ,jsonobject为要找到的json对象键名,target为这个对象的值
for(int i = 0;i<array.size();i++)
{
QJsonValue arrayValue = array.at(i);
QString projectname = arrayValue[jsonObject].toString();
if(projectname == target)
{
return true;
}
}
return false;
}
//传入键,从Json数组读取其中的Json数组 (格式是一个Json数组,其中包含Json对象和另一个Json数组)
//target是要找的键,key是数组中的键
QJsonArray readArrayReturnArray(QJsonArray array,QString target,QString key,QString arrayKey)
{
QJsonValue value;
QJsonArray thisArray = {};
for(int i=0;i<array.size();i++)
{
value = array.at(i);
if(value[target].toString() == key)
{
thisArray = value[arrayKey].toArray();
}
}
return thisArray;
}
//传入键,从Json数组读取其中的Json对象 (格式是一个Json数组,其中包含Json对象和另一个Json数组)
//target是要找的键,key是数组中的键
QJsonObject readArrayReturnObject(QJsonArray array,QString target,QString key,QString arrayKey)
{
QJsonValue value;
QJsonObject thisObject = {};
for(int i=0;i<array.size();i++)
{
value = array.at(i);
if(value[target].toString() == key)
{
thisObject = value[arrayKey].toObject();
}
}
return thisObject;
}
bool writeObject2JsonFile(QJsonObject object,QString filename)
{
QFile file(filename);
if(!file.open(QIODevice::WriteOnly))
{
return false;
}
QJsonDocument jsondocu(object);
file.write(jsondocu.toJson());
file.close();
return true;
}
//格式化Json数据
QString JsonParse(QString Json)
{
QJsonObject ob = ReadQStringReturnObject(Json);
QJsonDocument docu;
docu.setObject(ob);
QByteArray by = docu.toJson(QJsonDocument::Indented);
QString result = by;
return result;
}
//传入QString,判断是否是Json
bool isJson(QString Json)
{
QJsonParseError JsonError;
QJsonDocument jsonDocument = QJsonDocument::fromJson(Json.toLocal8Bit().data(),&JsonError);
if(jsonDocument.isNull() ||JsonError.error != QJsonParseError::NoError)
{
qDebug()<<JsonError.errorString();
return false;
}
else
{
qDebug()<<JsonError.errorString();
return true;
}
}
};
}
#endif // EASYQJSON_H
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/onlyyyy/MyPostman.git
git@gitee.com:onlyyyy/MyPostman.git
onlyyyy
MyPostman
MyPostman
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385