json 工作当中经常会用到,有时会出现一些莫名其妙的问题,如json中多出一个字段,像下面的代码:
#include <json.h>
#include <fstream>
#include <iostream>
int main()
{
Json::Value config;
config["name"] = "ipc";
printf("config = %s\n", config.toStyledString().c_str());
if(config["channel"].asInt() == 1)
{
}
printf("config = %s\n", config.toStyledString().c_str());
return 0;
}
输出结果会是什么呢?
只是进行了判断,结果就多出了一个字段。查看源码后才发现,如果访问的对象没有会新建且赋null
正确用法应该是先用isMember判断,存在后再进行操作:
#include <json.h>
#include <fstream>
#include <iostream>
int main()
{
Json::Value config;
config["name"] = "ipc";
printf("config = %s\n", config.toStyledString().c_str());
if(config.isMember("channel") && config["channel"].asInt() == 1)
{
}
printf("config = %s\n", config.toStyledString().c_str());
return 0;
}