一、源码编译

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文件的更多相关文章

  1. 读取本地json文件,转出为指定格式json 使用Base64进行string的加密和解密

    读取本地json文件,转出为指定格式json   引用添加Json.Net 引用命名空间 using Newtonsoft.Json //读取自定目录下的json文件StreamReader sr = ...

  2. 读取本地json文件,并转换为dictionary

    // 读取本地JSON文件 - (NSDictionary *)readLocalFileWithName:(NSString *)name { // 获取文件路径 NSString *path = ...

  3. jQuery ajax读取本地json文件

    jQuery ajax读取本地json文件 json文件 { "first":[ {"name":"张三","sex": ...

  4. JavaScript读取本地json文件

    JavaScript读取本地json文件 今天调试了一上午,通过jQuery读取本地json文件总是失败,始终找不出原因,各种方法都试了 开始总以为是不是json格式的问题.高了半天不行 后来读了一个 ...

  5. python 数据写入json文件时中文显示Unicode编码问题

    一.问题描述 import json dir = { '春晓':'asfffa', '春眠不觉晓' : '处处闻啼鸟', '夜来风雨声' : 56789, 'asdga':'asdasda' } fp ...

  6. Json.NET读取和写入Json文件

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  7. 19.JAVA-从文件中解析json、并写入Json文件(详解)

    1.json介绍 json与xml相比, 对数据的描述性比XML较差,但是数据体积小,传递速度更快. json数据的书写格式是"名称:值对",比如: "Name" ...

  8. 读取本地json文件,转出为指定格式json

    引用添加Json.Net 引用命名空间 using Newtonsoft.Json //读取自定目录下的json文件 StreamReader sr = new StreamReader(@" ...

  9. Unity实现写入json文件

    using System.Collections; using System.Collections.Generic; using UnityEngine; using LitJson; using ...

随机推荐

  1. mongo里面根据对象字段的ID查询 db.Photo.find({'owner.$id':ObjectId('xxxx')}) , 并且使用forEach循环修改查询的数据

    var ones = db.Photo.find({'owner.$id':ObjectId("5344f0dab7c58e8e098b4567")}) db.Photo.find ...

  2. 5.9-2比较str1和str2截取后的子串

    package zfc; public class ZfcShcq { public static void main(String[] args) { // TODO Auto-generated ...

  3. Google-解决在调试页面或者js时总是提示烦恼的断点问题

    按F12键,然后切换到Source标签,看底下的那个跟暂停一样的图标是不是变成蓝色或紫色了? 如果是蓝色或者紫色,则把他切换到“灰色”状态(点击图标就会切换成不同的状态.或者可能是其他颜色状态),如下 ...

  4. Spring 事物机制

    Spring两种事物处理机制,一是声明式事物,二是编程式事物  声明式事物 1)Spring的声明式事务管理在底层是建立在AOP的基础之上的. 其本质是对方法前后进行拦截,然后在目标方法开始之前创建或 ...

  5. BZOJ-2002 弹飞绵羊 Link-Cut-Tree (分块)

    2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 Sec Memory Limit: 259 MB Submit: 6801 Solved: 3573 [Submi ...

  6. Mysql安全配置

    相关学习资料 http://drops.wooyun.org/tips/2245 http://www.cnblogs.com/siqi/archive/2012/11/21/2780966.html ...

  7. 网络包处理工具NetBee

    What is NetBee? NetBee is a new library intended for several types of packet processing, such as pac ...

  8. c++ 函数调用在进入下一个循环的时候会再次初始化参数,将函数体直接写进去就正常

    #include"stdafx.h" #include"string" #include<iostream> #include<vector& ...

  9. CATransform3D

    本章介绍图层的几何组成部分,及他们之间的相互关,同时介绍如何变换矩阵可以产生复杂的视觉效果. 1.1 图层的坐标系 图层的坐标系在不同平台上面具有差异性.在iOS系统中,默认的坐标系统原点在图层的中心 ...

  10. HD 2177(威佐夫博弈 入门)

    取(2堆)石子游戏 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...