首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >libjson不能正确解析整数

libjson不能正确解析整数
EN

Stack Overflow用户
提问于 2013-01-16 17:18:29
回答 1查看 605关注 0票数 0

我正在尝试解析下面的JSON数据(用JSON.stringify创建)。我使用的是libJSON 7。我的代码如下:

代码语言:javascript
复制
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 ( == )0,然而,它等于1.#QNAN00000000000。有谁知道如何绕过这个bug吗?另外,如果我使用as_int而不是as_float,它可以正确地解析数据;因此,看起来这个错误只发生在as_float方法上。

EN

回答 1

Stack Overflow用户

发布于 2013-01-16 17:53:09

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

你的json结构是datajson似乎就是你要解析的字符串。因此,json.begin()应该是该字符串的第一个字符,而不是第一个json值。由于第一个字符是双引号,因此不能将其解析为浮点型->。也许这就是你想要的:

代码语言:javascript
复制
JSONNode data = libjson::parse(json);
auto i = data.begin();  //<-- data, not json!
auto num = i->as_float();

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14354841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档