libjson错误地解析整数

时间:2013-01-16 09:18:29

标签: c++ c json

我正在尝试解析以下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,它会正确解析数据;所以,看起来这个bug只发生在as_float方法中。

1 个答案:

答案 0 :(得分:0)

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

您的json结构为datajson似乎是您正在解析的字符串。所以json.begin()将是该字符串中的第一个字符,而不是第一个json值。由于第一个字符是双引号,因此无法将其解析为float - >你得到了你看到的废话。也许这就是你想要的:

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

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

PS:您发布的json字符串以不匹配的}结尾 - 这可能会使解析器感到困惑。