C++解析Json,使⽤JsonCpp读写Json数据(JavaScript Object Notation, JS 对象标记) 是⼀种轻量级的数据交换格式。通常⽤于数据交换或存储。
是⼀个基于C++语⾔的开源库,⽤于C++程序的Json数据的读写操作。
JsonCpp是⼀个开源库
c语言fscanf读取txt学生信息使⽤
其中最简单的⽅法是执⾏项⽬根⽬录中的python脚本,构建头⽂件和源⽂件。
1. 在安装Python环境的控制台中进⼊jsoncpp项⽬根⽬录,
2. 执⾏命令:
python amalgamate.py
3. 将⽣成的dist⽬录拷贝到⾃⼰的项⽬中,其中包源⽂件jsoncpp.cpp和头⽂件json.h、json-forwards.h。
基本类和⽅法
使⽤jsoncpp库时需要包含头⽂件#include <json/json.h>(包含⽬录根据需要修改)
⽅法命名空间:Json
常⽤类
Value:⽤于存储Json数据
CharReader:从字符串中读取Json数据的抽象类
c语言编程软件下载win10CharReaderBuilder:CharReader类的实现,可以读取标准输⼊流中的数据
Demo
定义Json数据结构,并输出数据
Json::Value jsonRoot; //定义根节点
Json::Value jsonItem; //定义⼀个⼦对象
jsonItem["item1"] = "one"; //添加数据
jsonItem["item2"] = 2;
jsonRoot.append(jsonItem);
jsonItem.clear(); //清除jsonItem
jsonItem["item1.0"] = 1.0;
jsonItem["item2.0"] = 2.0;
jsonRoot["item"] = jsonItem;
cout << StyledString() << endl; //输出到控制台
将Json写⼊到⽂件
ofstream ofs; //标准输出流
ofs.open("sample.json"); //创建⽂件
ofs << StyledString(); //输出
ofs.close();
从⽂件读取Json数据
ifstream ifs; //标准输⼊流
ifs.open("sample.json");
jsonRoot.clear();
Json::CharReaderBuilder builder;
二郎神君是什么职位linux初级认证builder["collectComments"] = false;
JSONCPP_STRING errs;
if (!parseFromStream(builder, ifs, &jsonRoot, &errs)) //从ifs中读取数据到jsonRoot
{
return;
}
从字符串读取Json数据
insert into列名是什么string jsonStr = StyledString(); //json字符串
jsonRoot.clear();
Json::CharReaderBuilder builder;
builder["collectComments"] = false;
JSONCPP_STRING errs;
Json::CharReader* reader = wCharReader();
if (!reader->parse(jsonStr.data(), jsonStr.data() + jsonStr.size(), &jsonRoot, &errs)) //从jsonStr中读取数据到jsonRoot {
return;
}
获取Json中的键值对
for (auto i = 0; i < jsonRoot.size(); i++)//遍历数组[]
{
for (auto sub= jsonRoot[i].begin(); sub != jsonRoot[i].end(); sub++)//遍历对象{}
{
cout << sub.name() << " : " << jsonRoot[i][sub.name()] << endl; //⽅法1
cout << sub.name() << " : " << (*sub) << endl; //⽅法2
} }
eg:
jsonRoot=
[
{
"item1" : 1,
"item2" : 2,
},
{
"a" : "a",
"b" : 2.0,
}
]python解析json文件
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论