You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 21:15:34