Допустим, я частично инициализирую собственный двойной массив в C++
и сериализую его с помощью nlohmann/json
:
const int numPoints = 10;
double mLengths[numPoints];
for (int i = 0; i < 5; i++) {
mLengths[i] = i + 0.1 * i;
}
nlohmann::json jsonData;
jsonData["lengths"] = mLengths;
std::string serialized_string = jsonData.dump();
Он будет правильно сериализовать что-то вроде этого:
{
"lengths":[
0.0,
1.1,
2.2,
3.3,
4.4,
-9.255963134931783e+61,
-9.255963134931783e+61,
-9.255963134931783e+61,
-9.255963134931783e+61,
-9.255963134931783e+61
]
}
Но иногда вместо того, чтобы взять «случайный двойной» из памяти, он сохраняет в json значение null, так что это приведет к чему-то вроде этого:
{
"lengths":[
0.0,
1.1,
2.2,
3.3,
4.4,
-9.255963134931783e+61,
-9.255963134931783e+61,
null,
-9.255963134931783e+61,
-9.255963134931783e+61
]
}
И когда я десериализовал его обратно, он бросил мнеисключение type must be number, but is null
.
Почему сериализуется null
вместо 0
?Это берет из памяти что-то "ноль"?Разве не 0 в C ++?