如何从JSON配置文件中删除所有'enable'字段?
从JSON配置文件中删除所有'enable'字段
本教程将指导您使用C++和nlohmann::json库,从JSON配置文件中删除所有名为'enable'的字段。
假设您有一个如下格式的JSON配置文件:
{ 'LocalSim': { 'data': [ { 'dataSourceName': 'front_short_camera', 'dataPoolName': 'CameraDataPool', 'dataLoaderName': 'CameraCudaDataLoader', 'dataWriterName': 'CameraCudaDataWriter', 'enable': 1, 'poolSize': 3, 'bufferLength': 5 }, { 'dataSourceName': 'gnss_result_data', 'dataPoolName': 'GnssDataPool', 'enable': 0, 'poolSize': 3, 'bufferLength': 15 } ], 'loaderConfig': [ { 'dataSourceName': 'front_short_camera', 'dataFile': '/mnt/disk4/louweijia/20211115T094228.SOC1/Front30.h265', 'enableLabelFile': 1, 'labelFile': '/mnt/disk4/louweijia/20211115T094228.SOC1/index-1638271274239066.json', 'height': 2168, 'width': 3848, 'frameRate': 30 }, { 'dataSourceName': 'gnss_result_data', 'dataFile': '/mnt/disk4/louweijia/20211115T094228.SOC1/record/common-sensors-gnss_result.pb.dat', 'enableLabelFile': 0, 'labelFile': '' } ], 'writeConfig': [ { 'dataSourceName': 'front_short_camera', 'rate': 1.0, 'height': 2168, 'width': 3848 }, { 'dataSourceName': 'gnss_result_data', 'rate': 1.0 } ] }}
您可以使用以下C++代码来删除所有'enable'字段:cpp#include
using json = nlohmann::json;
void removeEnableFields(const std::string& jsonFilePath) { std::ifstream file(jsonFilePath); if (!file) { std::cerr << 'Failed to open JSON file: ' << jsonFilePath << std::endl; return; }
json jsonData; file >> jsonData; file.close();
// 删除'data'字段中的'enable'字段 for (auto& item : jsonData['LocalSim']['data']) { item.erase('enable'); }
// 删除'loaderConfig'字段中的'enable'字段 for (auto& item : jsonData['LocalSim']['loaderConfig']) { item.erase('enable'); }
// 删除'writeConfig'字段中的'enable'字段 for (auto& item : jsonData['LocalSim']['writeConfig']) { item.erase('enable'); }
// 保存修改后的JSON数据到原文件 std::ofstream outFile(jsonFilePath); if (!outFile) { std::cerr << 'Failed to write to JSON file: ' << jsonFilePath << std::endl; return; } outFile << jsonData.dump(4); outFile.close();}
int main() { std::string jsonFilePath = 'your_json_file_path.json'; // 替换为实际的JSON文件路径 removeEnableFields(jsonFilePath); return 0;}
代码说明:
- 包含头文件: 包含必要的头文件,包括
<iostream>用于输入输出,<fstream>用于文件操作,<sstream>用于字符串流,以及<nlohmann/json.hpp>用于解析和操作 JSON 数据。2. 命名空间: 使用using json = nlohmann::json;简化代码。3.removeEnableFields函数: * 接收 JSON 文件路径作为参数。 * 打开 JSON 文件并读取其内容到jsonData对象中。 * 使用循环遍历jsonData['LocalSim']['data']、jsonData['LocalSim']['loaderConfig']和jsonData['LocalSim']['writeConfig']中的每个元素,并使用erase('enable')方法删除 'enable' 字段。 * 将修改后的 JSON 数据写回原始文件。4.main函数: * 定义 JSON 文件路径。 * 调用removeEnableFields函数删除 'enable' 字段。
使用方法:
- 将代码保存为
.cpp文件(例如,remove_enable.cpp)。2. 使用 C++ 编译器编译代码:g++ remove_enable.cpp -o remove_enable -lnlohmann_json。3. 将your_json_file_path.json替换为您的 JSON 文件路径。4. 运行程序:./remove_enable。
程序运行后,您的 JSON 文件中的所有 'enable' 字段都将被删除。
原文地址: https://www.cveoy.top/t/topic/zpq 著作权归作者所有。请勿转载和采集!