在C++中将JSON值转换为整数

10

我正在使用C++读取JSON值

Json::Reader reader

值被存储在Json :: Value root中。

这个root包含"age"和"id",我想将root ["age"]转换为整数。

我尝试使用.str()将其转换为字符串,但无法获取。

有什么建议吗?


你在使用jsoncpp吗?根据你提到的类,看起来是这样。如果是的话,比其他人建议的更容易,因为jsoncpp已经在Value类上有一个内置方法可以将其转换。 - Mark Loeser
3个回答

13

jsoncpp 中,他们为 Json::Value 对象提供了辅助方法。你只需调用值上的 asInt() 方法进行转换。

int ageAsInt = root["age"].asInt()

1
我现在遇到了错误,错误信息为std::runtime_error: 类型无法转换为int。 - rocx
1
在问题中提供JSON示例将非常有帮助。同时请确认您在使用哪个库,以便我们更好地回答您的问题。 - Mark Loeser
1
我的JSON内容是:{"age": "2", "date": "2010-12-07 09-40-38"}我正在使用jsoncpp和json_utils。 - rocx
1
好的,那么你之所以出现错误是因为你在 JSON 中将值存储为字符串。 这真的是你想要做的吗? - Mark Loeser
现在它可以工作了。 我首先使用 .asString() 将这个 JSON 值转换为字符串,然后使用 asInt()。谢谢! - rocx
@rocx 这样做 x.asString().asInt() 没有意义。std::string 没有 asInt() 方法。 - Nathaniel Jones

1

我的 root["age"] 返回的是 json::value 而不是 std::string,所以我无法使用 stoi()。 - rocx
1
请注意,stoi会引发异常,您可能希望使用atoi然后访问字符串的.c_str()。 - Owl

0

如果无法直接转换为整数,先将其转换为字符串,然后再转换为整数

                    string age = root["age"].asString();
                    int age2 = std::stoi(age);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接