JsonCpp主要的类和常见函数
Json::Value 表示所有的类型,比如int,string,object,array等,即存储json的所有数据。假设实例类为rootJson::Reader 将json文件流或字符串解析到Json::Value对象中,使用parse成员函数。假设实例类为reader。 reader.parse()Json::Writer 与Json::Reader相反,将Json::Value转换成字符串流,其有两个子类Json::FastWriter和Json::StyleWriter分别输出不带格式的json和带格式的json将json对象以字符串的方式打印出来,用root.toStyledString().c_str()判断json对象中是否含有某个key值 root.isMember(“key”); 或value[“key”].isNull();判断json对象是否为空root.empty()判断json对象成员的个数 root.size();删除某个key值,root.removeMember(“name”);
从字符串或文件流解析json
int ParseJsonFromString()
{
const char* str = "{\"name\": \"喜庆\",\"语文\": 100,\"数学\": 90,\"英语\": 80}";
Json::Reader reader;
Json::Value root;
if (reader.parse(str, root))
{
printf("%s\n", root.toStyledString().c_str());
}
Json::Value newIterm;
newIterm["历史"] = 88;
root.append(newIterm);
return 0;
}
int ParseJsonFromStream()
{
std::ifstream ifs("./conf.json");
if(ifs.is_open())
{
Json::Reader reader;
Json::Value root;
if(reader.parse(ifs,root))
{
printf("%s\n", root.toStyledString().c_str());
}
}
}
遍历json对象
int ParseJsonFromStream()
{
std::ifstream ifs("./conf.json");
if(ifs.is_open())
{
Json::Reader reader;
Json::Value root;
if(reader.parse(ifs,root))
{
Json::Value::Members mem = root.getMemberNames;
Json::Value::Members::iterator it = mem.begin(), end = mem.end();
for(; it != end; it ++)
{
std::str = *it;
root[str.c_str()].isString();
root[str.c_str()].asString();
root[str.c_str()].atInt();
}
}
}
}
将字符串转为json对象
void jsonWriteToFile(Json::Value &root)
{
Json::FastWriter writer;
std::string str = writer.write(root);
Json::StyleWriter styledWriter;
std::string styledStr = styledWriter.write(root);
std::ofstream ofs("a.json");
ofs << str;
ofs.close();
}
转载请注明原文地址:https://blackberry.8miu.com/read-38888.html