Как я могу сериализовать 2 набора с помощью nlohmann/json.hpp
У меня есть два неупорядоченных набора пар (X,Y), реализованных с использованием форс-хэша, и я хотел бы преобразовать их в файл Json, который имеет специальный формат.
unordered_set<pair<int,int>> visited, cleaned
, Я хочу, чтобы они были представлены таким образом в формате Json, используя nlohmann/json.hpp C++:
{
"visited": [
{
"X": 2,
"Y": 2
},
{
"X": 3,
"Y": 0
},
{
"X": 3,
"Y": 1
},
{
"X": 3,
"Y": 2
}
],
"cleaned": [
{
"X": 2,
"Y": 2
},
{
"X": 3,
"Y": 0
},
{
"X": 3,
"Y": 2
}
],
}
Может кто-нибудь помочь мне с кодом C++ для этой части? мой код
for (auto it = visited.begin(); it != visited.end(); ++it)
{
j2["visited"]["X"]=it->second;
j2["visited"]["Y"] = it->first;
}
for (auto it = cleaned.begin(); it != cleaned.end(); ++it)
{
j2["cleaned"]["X"] = it->second;
j2["cleaned"]["Y"] = it->first;
}
и это производит:
{
"cleaned": {
"X": 3,
"Y": 2
},
"visited": {
"X": 3,
"Y": 2
}
}
1 ответ
Решение
Желаемый формат JSON содержит массивы. Используйте что-то вроде этого, чтобы явно создать их:
nlohmann::json arr;
for (auto it = visited.begin(); it != visited.end(); ++it) {
nlohmann::json o;
o["X"] = it->second;
o["Y"] = it->first;
arr.push_back(o);
}
j2["visited"] = arr;
И аналогично для второй части.