如何用nlohmann-json仅同步current中original原有键的更新?
使用nlohmann-json同步JSON对象(仅保留原有键)
要实现仅同步original原有键的需求,nlohmann-json没有直接的内置函数,但可以通过简洁的遍历操作完成,无需复杂逻辑。
核心实现思路
遍历original的所有键,逐一检查current中是否存在该键:如果存在,就将current对应的值更新到original中;如果不存在则跳过。这样就能完全保留original的键结构,只更新已有键的数值。
代码示例
#include <nlohmann/json.hpp> #include <iostream> using json = nlohmann::json; // 同步current到original,仅保留original原有键 void sync_original(json& original, const json& current) { for (auto& [key, val] : original.items()) { if (current.contains(key)) { val = current[key]; } } } int main() { // 初始original json original = { {"foo", "hello"} }; // 修改后的current,包含新增键bar json current = { {"foo", "world"}, {"bar", "some other stuff"} }; // 执行同步 sync_original(original, current); // 输出结果:仅更新foo,bar被忽略 std::cout << original.dump(4) << std::endl; return 0; }
输出结果
{ "foo": "world" }
这种方式代码简洁、逻辑直观,完全符合需求——既同步了原有键的更新值,又不会引入current中新增的键。
内容的提问来源于stack exchange,提问作者Some programmer dude
相关产品推荐
相关产品推荐

