【发布时间】:2017-07-11 19:08:08
【问题描述】:
我在 ubuntu 14.04 上使用 jsoncpp。与 apt-get libjsoncpp-dev libjsoncpp0 一起安装。我不确定它是什么版本的 jsoncpp。
我的键名有错字(在 C++ 中),很难追查。考虑这个例子:
#include <iostream>
#include <jsoncpp/json/json.h>
int main(int argc, char** argv) {
Json::Reader reader(Json::Features::strictMode());
Json::Value obj;
std::string json = "{\"mykey\" : 42}";
if (!reader.parse(json.c_str(), obj)) {
std::cout << "JSON parse error" << std::endl;
}
const Json::Value& mykey1 = obj["mykey"];
std::cout << "mykey1:" << mykey1.asInt() << std::endl;
const Json::Value& mykey2 = obj["mykey_typo"];
std::cout << "mykey2:" << mykey2.asInt() << std::endl;
return 0;
}
我得到这个输出:
mykey1:42
mykey2:0
访问不存在的密钥会产生 0 值这一事实让我感到害怕。这意味着如果有错字,程序将只使用零而不是正确的值。我宁愿知道有错字。有没有办法让 jsoncpp 抛出或者这里推荐的方法是什么?
我可以编写一个调用 isMember 然后进行查找的助手,但我想知道库本身是否有解决方案。
【问题讨论】: