gpt4 book ai didi

c++ - 如何使用 nlohmann json 在 C++ 中将相同的关键 json 数据合并为一个

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:02:20 35 4
gpt4 key购买 nike

我有以下 JSON 数据:

{
"Created": "2019-08-01T14:36:49Z",
"Tags": [

{
"ObjectId": "1",
"Time": 6,
"TrackerId": "W1"

},

{
"ObjectId": "2",
"Time": 4,
"TrackerId": "E34"

},
{
"ObjectId": "3",
"Time": 4,
"TrackerId": "W1"

},
{
"ObjectId": "4",
"Time": 8,
"TrackerId": "E34"
}
],
"id": 0
}

在上面的 JSON 数据中,我们可以看到我们有 4 个对象 ID,但只有 2 个跟踪器 ID。我需要合并具有相同 TrackerId 的数据并添加它们的时间。所以上面的数据会变成:

{
"Created": "2019-08-01T14:36:49Z",
"Tags": [

{
"Time": 10,
"TrackerId": "W1"

},

{
"Time": 12,
"TrackerId": "E34"

}

],
"id": 0
}

我正在使用 Nlohmann JSON library对于 C++。我们怎样才能做到这一点?

最佳答案

您可以构建跟踪器的 map ,然后将它们输入到 JSON 对象中:

json merge_objects(const json& data)
{
std::map<std::string, int> times;
for (const auto& entry : data["Tags"]) {
times[entry["TrackerId"]] += static_cast<int>(entry["Time"]);
}

json result;
result["Created"] = data["Created"];
for (const auto& [id, time] : times) {
json tag;
tag["Time"] = time;
tag["TrackerId"] = id;
result["Tags"].push_back(tag);
}
return result;
}

( live demo )

关于c++ - 如何使用 nlohmann json 在 C++ 中将相同的关键 json 数据合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57306578/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com