Libjson解析整数错误

libjson parses integers incorrectly

本文关键字:错误 整数 Libjson      更新时间:2023-10-16

我试图解析以下JSON数据(与JSON.stringify创建)。我使用libJSON 7。我的代码如下:

wstring jsonstr = _T("{"Id":0,"Note":"","Username":"user","Password":"pass","Enabled":true,"ProfileId":"","UserAgent":"","LastUsage":0,"Failures":0,"Abuses":0}");
JSONNode jsondata = libjson::parse(jsonstr);
auto i = jsondata.begin();
auto num = i->as_float();
int idIsNan = _isnan(num);// Nonzero here

现在我期望num == (double)0,然而,它等于1。# QNAN00000000000代替。有人知道怎么绕过这个bug吗?此外,如果我使用as_int代替as_float,它解析数据正确;所以,看起来这个错误只发生在as_float方法上。

我猜这里有点,因为您没有显示所有相关代码:

你的json结构是data, json似乎是你正在解析的字符串。因此json.begin()将是该字符串中的第一个字符,而不是第一个json值。因为第一个字符是双引号,它不能被解析为浮点数->你得到你所看到的废话。也许这就是你想要的:

JSONNode data = libjson::parse(json);
auto i = data.begin();  //<-- data, not json!
auto num = i->as_float();

下次请记得给出所有相关的代码,包括所有使用的变量的定义(在本例中是'json')。

PS:您发布的json字符串以不匹配的}结尾-这可能会混淆解析器。

相关文章: