有没有网站建设的教程,湘潭seo公司,最彻底的手机优化软件,镇平做网站c11 json解析库nlohmann/json.hpp文件整个代码由一个头文件组成 json.hpp#xff0c;没有子项目#xff0c;没有依赖关系#xff0c;没有复杂的构建系统#xff0c;使用起来非常方便。
json.hpp库在文章末尾下载
读写主要有两种方式#xff0c;第一种根据键值对读写11 json解析库nlohmann/json.hpp文件整个代码由一个头文件组成 json.hpp没有子项目没有依赖关系没有复杂的构建系统使用起来非常方便。
json.hpp库在文章末尾下载
读写主要有两种方式第一种根据键值对读写第二种直接遍历json文件读写。
1、根据键值对读写 假设有个json文件格式如下
{test: [{FixedParameters: {bit_depth: 10,dark_level: 5.5,dark_time: 100,dynamic_range: 0.1},InitialParameters:{InitialTime:20,rate:50},JudgmentMechanism:{max_time: 100000,min_time: 0,rangeMax: 0.9,rangeMin: 0.3,targetMax: 0.9,targetMin: 0.5},IterationStepLength:{belowNormalRange:1.5,aboveNormalRange:2,totalIterations:10},IsUseROIs:{isUseROIs:false,isCalculateEntireROIGray:false,pixelTotalNumber:1000,isUseWeightedAverage:false,ROIS:[{Name:ROI1,weight:1,x:0,y:0,width:100,height:100}]},Index: 1,Name: data1,SerialNumber: 0000000000},{FixedParameters: {bit_depth: 200,dark_level: 10.0,dark_time: 3000,dynamic_range: 0.5},InitialParameters:{InitialTime:0,rate:20},JudgmentMechanism:{max_time: 200000,min_time: 11111,rangeMax: 0.9,rangeMin: 0.3,targetMax: 0.9,targetMin: 0.5},IterationStepLength:{belowNormalRange:1.5,aboveNormalRange:2,totalIterations:10},IsUseROIs:{isUseROIs:false,isCalculateEntireROIGray:false,pixelTotalNumber:1000,isUseWeightedAverage:false,ROIS:[{Name:ROI1,weight:1,x:0,y:0,width:100,height:200}]},Index: 2,Name: data2,SerialNumber: 1111111111}]
}读json文件
头文件的部分内容
#pragma once
#include iostream
#include fstream
#include string
#include mutex
#include json.hpp
using namespace std;
using json nlohmann::ordered_json;struct FixedParameters_
{int bit_depth;double dark_level;double dark_time;double dynamic_range;
};struct InitialParameters_
{int InitialTime;bool isAutoUpdateInitTime;bool isAutoUpdateMaxMinTime;int rate;
};struct JudgmentMechanism_
{int max_time;int min_time;double rangeMax;double rangeMin;double target_max;double target_min;
};struct IterationStepLength_
{double belowNormalRange;double aboveNormalRange;int totalIterations;
};struct ROIS
{double weight;int x;int y;int width;int height;
};struct IsUseROIs_
{bool isUseROIs;bool isCalculateEntireROIGray;int pixelTotalNumber;bool isUseWeightedAverage;std::mapstd::string, ROIS rois;
};struct Param
{FixedParameters_ fixedParameters;InitialParameters_ initialParameters;JudgmentMechanism_ judgmentMechanism;IterationStepLength_ iterationStepLength;IsUseROIs_ isUseROIs;std::string SN;
};struct AEConfig
{std::mapstd::string, Param AE_Config;
};class ReadWriteConfig
{
public:static ReadWriteConfig *getinstance();ReadWriteConfig();//read/write jsonAEConfig ReadAEConfig(string configPath);void WriteAEConfig(AEConfig AE_Config, string configPath);private:static ReadWriteConfig *m_ReadWriteConfig;string path;json m_JsonConfig;
};CPP部分
AEConfig ReadWriteConfig::ReadAEConfig(string configPath)
{m_mutex.lock();if (configPath ! )path configPath;std::ifstream ifs(path, std::fstream::in);if (ifs.fail()){//return 0;m_mutex.unlock();throw std::runtime_error(Unable to open AEConfig File.);}ifs m_JsonConfig;ifs.close();AEConfig AE_Config;auto AEConfig m_JsonConfig[test];for (auto it : AEConfig.items()){string cameraName it.value()[Name].getstring();AE_Config.AE_Config[cameraName].SN it.value()[SerialNumber].getstring();AE_Config.AE_Config[cameraName].fixedParameters.bit_depth it.value()[FixedParameters][bit_depth].getint();AE_Config.AE_Config[cameraName].fixedParameters.dark_level it.value()[FixedParameters][dark_level].getdouble();AE_Config.AE_Config[cameraName].fixedParameters.dark_time it.value()[FixedParameters][dark_time].getdouble();AE_Config.AE_Config[cameraName].fixedParameters.dynamic_range it.value()[FixedParameters][dynamic_range].getdouble();AE_Config.AE_Config[cameraName].initialParameters.InitialTime it.value()[InitialParameters][InitialTime].getint();AE_Config.AE_Config[cameraName].initialParameters.isAutoUpdateInitTime it.value()[InitialParameters][isAutoUpdateInitTime].getbool();AE_Config.AE_Config[cameraName].initialParameters.isAutoUpdateMaxMinTime it.value()[InitialParameters][isAutoUpdateMaxMinTime].getbool();AE_Config.AE_Config[cameraName].initialParameters.rate it.value()[InitialParameters][rate].getint();AE_Config.AE_Config[cameraName].judgmentMechanism.max_time it.value()[JudgmentMechanism][max_time].getint();AE_Config.AE_Config[cameraName].judgmentMechanism.min_time it.value()[JudgmentMechanism][min_time].getint();AE_Config.AE_Config[cameraName].judgmentMechanism.rangeMax it.value()[JudgmentMechanism][rangeMax].getdouble();AE_Config.AE_Config[cameraName].judgmentMechanism.rangeMin it.value()[JudgmentMechanism][rangeMin].getdouble();AE_Config.AE_Config[cameraName].judgmentMechanism.target_max it.value()[JudgmentMechanism][targetMax].getdouble();AE_Config.AE_Config[cameraName].judgmentMechanism.target_min it.value()[JudgmentMechanism][targetMin].getdouble();AE_Config.AE_Config[cameraName].iterationStepLength.belowNormalRange it.value()[IterationStepLength][belowNormalRange].getdouble();AE_Config.AE_Config[cameraName].iterationStepLength.aboveNormalRange it.value()[IterationStepLength][aboveNormalRange].getdouble();AE_Config.AE_Config[cameraName].iterationStepLength.totalIterations it.value()[IterationStepLength][totalIterations].getint();AE_Config.AE_Config[cameraName].isUseROIs.isUseROIs it.value()[IsUseROIs][isUseROIs].getbool();AE_Config.AE_Config[cameraName].isUseROIs.isCalculateEntireROIGray it.value()[IsUseROIs][isCalculateEntireROIGray].getbool();AE_Config.AE_Config[cameraName].isUseROIs.pixelTotalNumber it.value()[IsUseROIs][pixelTotalNumber].getint();AE_Config.AE_Config[cameraName].isUseROIs.isUseWeightedAverage it.value()[IsUseROIs][isUseWeightedAverage].getbool();auto roiConfig it.value()[IsUseROIs][ROIS];for (auto it : roiConfig.items()){string roiName it.value()[Name].getstring();ROIS rois;rois.weight it.value()[weight].getdouble();rois.x it.value()[x].getint();rois.y it.value()[y].getint();rois.width it.value()[width].getint();rois.height it.value()[height].getint();AE_Config.AE_Config[cameraName].isUseROIs.rois[roiName] rois;}}m_mutex.unlock();return AE_Config;
}写json文件
void ReadWriteConfig::WriteAEConfig(AEConfig AE_Config, string configPath)
{m_mutex.lock();if (configPath ! )path configPath;m_JsonConfig[test].clear();for (auto gt AE_Config.AE_Config.begin(); gt ! AE_Config.AE_Config.end(); gt){json AutoExposure;AutoExposure[Name] gt-first;AutoExposure[SerialNumber] gt-second.SN;AutoExposure[FixedParameters][bit_depth] gt-second.fixedParameters.bit_depth;AutoExposure[FixedParameters][dark_level] gt-second.fixedParameters.dark_level;AutoExposure[FixedParameters][dark_time] gt-second.fixedParameters.dark_time;AutoExposure[FixedParameters][dynamic_range] gt-second.fixedParameters.dynamic_range;AutoExposure[InitialParameters][InitialTime] gt-second.initialParameters.InitialTime;AutoExposure[InitialParameters][isAutoUpdateInitTime] gt-second.initialParameters.isAutoUpdateInitTime;AutoExposure[InitialParameters][isAutoUpdateMaxMinTime] gt-second.initialParameters.isAutoUpdateMaxMinTime;AutoExposure[InitialParameters][rate] gt-second.initialParameters.rate;AutoExposure[JudgmentMechanism][max_time] gt-second.judgmentMechanism.max_time;AutoExposure[JudgmentMechanism][min_time] gt-second.judgmentMechanism.min_time;AutoExposure[JudgmentMechanism][rangeMax] gt-second.judgmentMechanism.rangeMax;AutoExposure[JudgmentMechanism][rangeMin] gt-second.judgmentMechanism.rangeMin;AutoExposure[JudgmentMechanism][targetMax] gt-second.judgmentMechanism.target_max;AutoExposure[JudgmentMechanism][targetMin] gt-second.judgmentMechanism.target_min;AutoExposure[IterationStepLength][belowNormalRange] gt-second.iterationStepLength.belowNormalRange;AutoExposure[IterationStepLength][aboveNormalRange] gt-second.iterationStepLength.aboveNormalRange;AutoExposure[IterationStepLength][totalIterations] gt-second.iterationStepLength.totalIterations;AutoExposure[IsUseROIs][isUseROIs] gt-second.isUseROIs.isUseROIs;AutoExposure[IsUseROIs][isCalculateEntireROIGray] gt-second.isUseROIs.isCalculateEntireROIGray;AutoExposure[IsUseROIs][pixelTotalNumber] gt-second.isUseROIs.pixelTotalNumber;AutoExposure[IsUseROIs][isUseWeightedAverage] gt-second.isUseROIs.isUseWeightedAverage;for (auto it gt-second.isUseROIs.rois.begin(); it ! gt-second.isUseROIs.rois.end(); it){json roi;roi[Name] it-first;roi[weight] it-second.weight;roi[x] it-second.x;roi[y] it-second.y;roi[width] it-second.width;roi[height] it-second.height;AutoExposure[IsUseROIs][ROIS].push_back(roi);}m_JsonConfig[test].push_back(AutoExposure);}std::ofstream os(path);if (os.fail()){//return 0;m_mutex.unlock();throw std::runtime_error(Unable to open AEConfig File.);}os m_JsonConfig.dump(4);os.close();m_mutex.unlock();
}
json.hpp库下载