无法使用RapidJSON处理浮点数的数组

问题描述 投票:0回答:1

我想使用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 arrayProcessing 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

我该如何解决?我想念什么?

json unreal-engine4 rapidjson
1个回答
0
投票

浮点说明符%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());
}
© www.soinside.com 2019 - 2024. All rights reserved.