C++简单使用Jsoncpp来读取写入json文件
一、源码编译
C++操作json字符串最好的库应该就是jsoncpp了,开源并且跨平台。它可以从这里下载。
下载后将其解压到任意目录,它默认提供VS2003和VS2010的工程文件,使用VS2010可以直接打开makefiles\msvc2010目录下的sln文件。
工程文件提供Jsoncpp的win32和win64静态库生成。点击生成--批生成选择需要生成的配置后即可生成jsoncpp静态库。生成的文件在makefiles\msvc2010\(x64\)Debug(Release)\目录下。
二、测试工程
新建Win32控制台项目,为了区分Debug和Release版本,将Debug目录下的lib_json.lib改名为lib_json_d.lib,复制到新建的工程目录。
将jsoncpp目录下的include文件夹也复制到工程目录
修改工程属性如下
主文件代码如下:
// testJson.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <fstream> //添加需要的头文件 #include "include/json/json.h" using namespace std; //链接需要的库文件 #ifdef _DEBUG #pragma comment(lib,"lib_json_d.lib") #else #pragma comment(lib,"lib_json.lib") #endif int _tmain(int argc, _TCHAR* argv[]) { cout<<"测试json写入"<<endl; Json::Value jsonRoot; Json::Value jsonItem; jsonItem["item1"] = "第一个条目"; jsonItem["item2"] = "第二个条目"; jsonItem["item3"] = 3; jsonRoot.append(jsonItem); jsonItem.clear();//清除上面已经赋值的项 jsonItem["First"]="1"; jsonItem["Second"]=2; jsonItem["Third"]=3.0F; jsonRoot.append(jsonItem); cout<<jsonRoot.toStyledString()<<endl; cout<<"测试json写入到文件"<<endl; ofstream ofs; ofs.open("test1.json"); ofs<<jsonRoot.toStyledString(); ofs.close(); cout<<"测试json读取"<<endl; string sJson = jsonRoot.toStyledString(); jsonRoot.clear(); Json::Reader jsonReader; if (!jsonReader.parse(sJson,jsonRoot)) { return -1; } for (auto it = jsonRoot.begin(); it!=jsonRoot.end(); it++) { for (auto sit = it->begin(); sit != it->end(); sit++) { cout<<sit.key()<<"\t"<<sit.name()<<endl; } } cout<<"测试读取json文件"<<endl; ifstream ifs; ifs.open("test1.json"); jsonRoot.clear(); if (!jsonReader.parse(ifs, jsonRoot)) { return -1; } ifs.close(); for (auto it = jsonRoot.begin(); it!=jsonRoot.end(); it++) { for (auto sit = it->begin(); sit != it->end(); sit++) { cout<<sit.key()<<"\t"<<sit.name()<<endl; } } return 0; }
三、运行结果
四、相关下载
分类:
Windows编程
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
· ASP.NET Core - 日志记录系统(二)
· 支付宝事故这事儿,凭什么又是程序员背锅?有没有可能是这样的...
· 在线客服系统 QPS 突破 240/秒,连接数突破 4000,日请求数接近1000万次,.NET 多
· C# 开发工具Visual Studio 介绍
· 在 Windows 10 上实现免密码 SSH 登录
· C#中如何使用异步编程