假设我部分初始化了一个本地双数组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
?它是否会从记忆中获取“空”的东西?C++中不是0吗?