gpt4 book ai didi

c++ - libjson 错误地解析整数

转载 作者:行者123 更新时间:2023-11-30 17:55:24 25 4
gpt4 key购买 nike

我正在尝试解析以下 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。有谁知道如何绕过这个错误?另外,如果我使用 as_int 而不是 as_float,它会正确解析数据;所以,这个错误似乎只发生在 as_float 方法中。

最佳答案

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

你的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 字符串以不匹配的 } 结尾 - 这可能会使解析器感到困惑。

关于c++ - libjson 错误地解析整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14354841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com