82 lines
3.2 KiB
C++
82 lines
3.2 KiB
C++
#include "DataParsing.h"
|
|
#include <QDebug>
|
|
|
|
DataParsing::DataParsing(QObject *parent) : QObject(parent)
|
|
{
|
|
|
|
}
|
|
|
|
DataParsing::~DataParsing()
|
|
{
|
|
|
|
}
|
|
|
|
void DataParsing::SetChannelSetting(const QString &str)
|
|
{
|
|
QByteArray bytes = str.toLatin1();
|
|
QJsonParseError jsonError;
|
|
QJsonDocument docunment = QJsonDocument::fromJson(bytes,&jsonError);
|
|
if (!docunment.isNull() && (jsonError.error == QJsonParseError::NoError))
|
|
{
|
|
// qDebug() << "文件解析成功!";
|
|
if(docunment.isObject()) //判断第一级对象是否存在
|
|
{
|
|
QJsonObject objec = docunment.object();
|
|
if(objec.contains("groups"))
|
|
{
|
|
QJsonValue arrays_value = objec.take("groups");
|
|
if(arrays_value.isArray()) //判断它是不是json组
|
|
{
|
|
QJsonArray array = arrays_value.toArray();
|
|
int nsize = array.size();
|
|
for(int i = 0; i< nsize; ++i)//groups
|
|
{
|
|
GroupData groupdata;
|
|
groupdata.ChannelType = array.at(i).toObject().value("ChannelType").toString();
|
|
groupdata.Channelid = array.at(i).toObject().value("name").toString();
|
|
if(array.at(i).toObject().value("channels").isArray())
|
|
{
|
|
QJsonArray channelArray = array.at(i).toObject().value("channels").toArray();
|
|
for(int i = 0;i < channelArray.size(); i++)//channels
|
|
{
|
|
//groupdata.mChannelData.clear();
|
|
QString dataType = channelArray.at(i).toObject().value("name").toString();
|
|
if(channelArray.at(i).toObject().value("data").isArray())
|
|
{
|
|
QVector<float> vec;
|
|
QJsonArray dataArray = channelArray.at(i).toObject().value("data").toArray();
|
|
for(int i = 0; i < dataArray.size(); i++)
|
|
{
|
|
QJsonValue value = dataArray.at(i);
|
|
float t = value.toVariant().toFloat();
|
|
vec.push_back(t);
|
|
// global::m_featureData.push_back(t);
|
|
}
|
|
groupdata.mapNametoData[dataType] = vec;
|
|
}
|
|
|
|
}
|
|
qDebug()<<"::Dealdat::SetChannelSetting() groupdata.mapNametoData.size()"<<groupdata.mapNametoData.size();
|
|
}
|
|
m_groupdata.push_back(groupdata);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
qDebug()<<"::Dealdat::SetChannelSetting() m_groupdata.size()"<<m_groupdata.size();
|
|
}
|
|
}
|
|
|
|
QVector<GroupData> &DataParsing::getFeatureData()
|
|
{
|
|
if(m_groupdata.size() == 0)
|
|
{
|
|
qDebug() << "解析失败";
|
|
}
|
|
else
|
|
{
|
|
qDebug() << "解析成功";
|
|
}
|
|
return m_groupdata;
|
|
}
|