lib :GitHub - open-source-parsers/jsoncpp: A C++ library for interacting with JSON.
#include <iostream>
#include"../Jsonlib/json/json.h"
#include<string>
int main()
{
FILE* pFile = fopen("json.txt", "r");
if (pFile)
{
//文件读取到buffer
std::string buffer;
buffer.resize(4096);
fread((char*)buffer.c_str(), 1, 4096, pFile);//每次读1字节,读4096次
fclose(pFile);
//字符串转对象
Json::Value root; //Json对象
Json::Reader reader;
if (reader.parse(buffer, root))//复制buffer的Json内容到root里
{
auto members = root.getMemberNames(); //获取key值
for (unsigned i = 0; i < members.size(); i++)
{
//std::cout <<members[i]<<" == " << root[members[i]].toStyledString() << std::endl;
switch (root[members[i]].type()) //数据类型
{
case Json::intValue://int
std::cout << members[i] << " == " << root[members[i]].asInt() << std::endl;
break;
case Json::stringValue://string
std::cout << members[i] << " == " << root[members[i]].asString() << std::endl;
break;
default:
std::cout <<members[i]<<" == " << root[members[i]].toStyledString() << std::endl;
}
}
//对象转字符串
std::string data = root.toStyledString(); //Json数据转换成string
std::cout << data;
}
//追加
root.clear();
root["array"] = Json::Value(Json::arrayValue); //key为array
//root["array"].resize(10);//设定大小
root["array"].append("hello"); //值为hello
root["bool"] = false; //key为"bool",值为"false"
std::cout << root.toStyledString();
}
}