我想使用rapidjson解析以下数组数组。我的代码环境是带有虚幻引擎v4.24.3的VS2019。我是C ++的新手。
const char* json = "{ \"data\":[[0.0,1.1],[2.1,3.1]] }";
我已经提到Rapidjson , get a value inside an array of another array和Processing arrays of arrays of integer with rapidjson
对于integer数组,下面的代码就可以了。
const char* json = "{ \"data\":[[0,1],[2,3]] }";
Document d;
d.Parse(json);
const rapidjson::Value& b = d["data"];
for (rapidjson::SizeType i = 0; i < b.Size(); i++)
{
const rapidjson::Value& c = b[i];
UE_LOG(LogTemp, Log, TEXT("%d: Test Data"), c[rapidjson::SizeType(0)].GetInt());
}
Returns->
LogTemp: 0: Test Data //Expected values
LogTemp: 2: Test Data
但是对于具有Float值的数组的数组,以下代码不起作用。
const char* json = "{ \"data\":[[0.5,1.1],[2.1,3.1]] }";
Document d;
d.Parse(json);
const rapidjson::Value& b = d["data"];
for (rapidjson::SizeType i = 0; i < b.Size(); i++)
{
const rapidjson::Value& c = b[i];
UE_LOG(LogTemp, Log, TEXT("%d: test Data"), c[rapidjson::SizeType(0)].GetFloat());
}
返回->
LogTemp: 0: test Data
LogTemp: -1073741824: test Data
我该如何解决?我想念什么?
浮点说明符%f应该用于浮点数据类型。
const char* json = "{ \"data\":[[0.5,1.1],[2.1,3.1]] }";
Document d;
d.Parse(json);
const rapidjson::Value& b = d["data"];
for (rapidjson::SizeType i = 0; i < b.Size(); i++)
{
const rapidjson::Value& c = b[i];
UE_LOG(LogTemp, Log, TEXT("%f: test Data"), c[rapidjson::SizeType(0)].GetFloat());
}