DataPlayer/ChaosDataPlayer/DataParsing.cpp

82 lines
3.2 KiB
C++
Raw Normal View History

2022-07-30 11:50:01 +08:00
#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;
}