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;
}
三、运行结果

四、相关下载
C++简单使用Jsoncpp来读取写入json文件的更多相关文章
- 读取本地json文件,转出为指定格式json 使用Base64进行string的加密和解密
读取本地json文件,转出为指定格式json 引用添加Json.Net 引用命名空间 using Newtonsoft.Json //读取自定目录下的json文件StreamReader sr = ...
- 读取本地json文件,并转换为dictionary
// 读取本地JSON文件 - (NSDictionary *)readLocalFileWithName:(NSString *)name { // 获取文件路径 NSString *path = ...
- jQuery ajax读取本地json文件
jQuery ajax读取本地json文件 json文件 { "first":[ {"name":"张三","sex": ...
- JavaScript读取本地json文件
JavaScript读取本地json文件 今天调试了一上午,通过jQuery读取本地json文件总是失败,始终找不出原因,各种方法都试了 开始总以为是不是json格式的问题.高了半天不行 后来读了一个 ...
- python 数据写入json文件时中文显示Unicode编码问题
一.问题描述 import json dir = { '春晓':'asfffa', '春眠不觉晓' : '处处闻啼鸟', '夜来风雨声' : 56789, 'asdga':'asdasda' } fp ...
- Json.NET读取和写入Json文件
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- 19.JAVA-从文件中解析json、并写入Json文件(详解)
1.json介绍 json与xml相比, 对数据的描述性比XML较差,但是数据体积小,传递速度更快. json数据的书写格式是"名称:值对",比如: "Name" ...
- 读取本地json文件,转出为指定格式json
引用添加Json.Net 引用命名空间 using Newtonsoft.Json //读取自定目录下的json文件 StreamReader sr = new StreamReader(@" ...
- Unity实现写入json文件
using System.Collections; using System.Collections.Generic; using UnityEngine; using LitJson; using ...
随机推荐
- AJAX(二)AJAX框架
上文(AJAX(一)AJAX的简介和基础)对ajax异步请求服务器做了详细的介绍和基础应用,可以看出,ajax的一些过程是相对不变的.不必要每次发送请求都写一遍发送代码,一些ajax开发人员已经把他们 ...
- PHP时间日期比较
若要使用PHP来比较日期,最好用DateTime::diff 但是这个是5.3才支持的,如果没有这样的环境,可以使用<.>来比较 如下例子,会输出right $date1=strtotim ...
- 传智168期JavaEE就业班 day01-html
* HTML * HTML: HyperText Markup Language 超文本标记语言. * HTML是最基础的网页语言. * HTML的代码都是由标签所组成. * HTML的基本格式 &l ...
- 【BZOJ 3732】 Network Kruskal重构树+倍增LCA
Kruskal重构树裸题, Sunshine互测的A题就是Kruskal重构树,我通过互测了解到了这个神奇的东西... 理解起来应该没什么难度吧,但是我的Peaks连WA,,, 省选估计要滚粗了TwT ...
- 【BZOJ 3674】可持久化并查集加强版&【BZOJ 3673】可持久化并查集 by zky 用可持久化线段树破之
最后还是去掉异或顺手A了3673,,, 并查集其实就是fa数组,我们只需要维护这个fa数组,用可持久化线段树就行啦 1:判断是否属于同一集合,我加了路径压缩. 2:直接把跟的值指向root[k]的值破 ...
- Linux operation strucutre
Under the /usr/src directory. 1.arch目录包括了所有和体系结构相关的核心代码.它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel CP ...
- 【CodeForces 605A】BUPT 2015 newbie practice #2 div2-E - Sorting Railway Cars
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=102419#problem/E Description An infinitely lon ...
- [转]ACM进阶计划
ACM进阶计划 大学期间,ACM队队员必须要学好的课程有: lC/C++两种语言 l高等数学 l线性代数 l数据结构 l离散数学 l数据库原理 l操作系统原理 l计算机组成原理 l人工智能 l编译原 ...
- IOS基础之 (四) OC对象
一 建立一个OC的类 完整的写一个函数:需要函数的声明和定义. 完整的写一个类:需要类的声明和实现. 1.类的声明 声明对象的属性和行为 #import <Foundation/Foundati ...
- POJ1703Find them, Catch them
Find them, Catch them Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 37722 Accepted: ...