如何使用 json.hpp 修改文件中的 JSON 值
How to modify JSON values in file using json.hpp
我正在使用以下库来处理 JSON 内容:https://github.com/nlohmann/json
我有一个json配置文件,里面的部分内容如下:
"mqtt_config": {
"host": "my_mqtt_broker.com",
"password": "admin",
"port": 8883,
"tls": true,
"username": "admin"
}
我希望能够在我的 C/C++ 应用程序中更改这些值中的任何一个。
我正在做的是尝试更改端口号的示例:
std::ifstream in(configFile);
json infile = json::parse(in);
infile["mqtt_config.port"] = 1883;
std::ofstream out(configFile);
out << std::setw(4) << infile << std::endl;
in.close();
out.close();
然而,这并不像我预期的那样运行,它只是将 "mqtt_config.port": 1883
作为单独的一行添加到文件中,而不是像我预期的那样嵌套?有人知道如何解决这个问题吗?提前致谢。
你好像误解了API,infile["mqtt_config.port"] = 1883;
这条语句会添加一个字符串为mqtt_config.port
的key
可以通过
修复
infile["mqtt_config"]["port"] = 1883;
我正在使用以下库来处理 JSON 内容:https://github.com/nlohmann/json
我有一个json配置文件,里面的部分内容如下:
"mqtt_config": {
"host": "my_mqtt_broker.com",
"password": "admin",
"port": 8883,
"tls": true,
"username": "admin"
}
我希望能够在我的 C/C++ 应用程序中更改这些值中的任何一个。
我正在做的是尝试更改端口号的示例:
std::ifstream in(configFile);
json infile = json::parse(in);
infile["mqtt_config.port"] = 1883;
std::ofstream out(configFile);
out << std::setw(4) << infile << std::endl;
in.close();
out.close();
然而,这并不像我预期的那样运行,它只是将 "mqtt_config.port": 1883
作为单独的一行添加到文件中,而不是像我预期的那样嵌套?有人知道如何解决这个问题吗?提前致谢。
你好像误解了API,infile["mqtt_config.port"] = 1883;
这条语句会添加一个字符串为mqtt_config.port
可以通过
修复infile["mqtt_config"]["port"] = 1883;