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;
}

三、运行结果

四、相关下载

代码下载

时间: 2024-08-07 08:36:36

C++简单使用Jsoncpp来读取写入json文件的相关文章

iOS国家城市选择器 读取本地json文件

最近在做的产品有这么个需求,读取本地json文件中的国家和城市信息,显示到pickerview上,在网上查了一下,发现没有什么合适的可用资源,所以就自己写了一个简单的DEMO. 效果图: 读取本地json的方法如下: + (NSMutableArray *)getCityData { NSArray *jsonArray = [[NSArray alloc]init]; NSData *fileData = [[NSData alloc]init]; NSUserDefaults *UD = [

python-字典有序并写入json文件

大致流程: 导包---import collections 新建一个有序字典---collections.OrderedDict() 写入json文件 代码: 1 import collections 2 real_result = collections.OrderedDict() 3 real_result["target"] = "total_result" 4 real_result["key1"] = "value1"

Json.NET读取和写入Json文件

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.IO; using System.Text; using Newtonsoft.Json; using com.zjpx.model; using System.Collections; usin

CSVFileUtil 读取写入CSV文件简单工具类

参考github大神源码 总结一下最简单的工具类记录一下 /** * @description CSV文件读取和输出 工具类.<br/> * @author michael * @date 2019/05/16 * @version Copyright (c) 2019, [email protected] All Rights Reserved. */ public class CSVFileUtil { private static final Logger LOGGER = Logger

jQuery中读取本地json文件

json文件是一种轻量级的数据交互格式.一般在jquery中使用getJSON()方法读取,具体示例代码如下,感兴趣的朋友可以参考下哈,希望可以帮助到你 $.getJSON(url,[data],[callback]) url:加载的页面地址 data: 可选项,发送到服务器的数据,格式是key/value callback:可选项,加载成功后执行的回调函数 目录结构: 1.首先建一个JSON格式的文件userinfo.json 保存用户信息. 如下: [ { "name":"

读取本地Json文件

//读取Json文件  地区 //将文件拖到本地  获取json数据 //获取json文件路径 NSString *pathArea=[[NSBundle mainBundle] pathForResource:@"area" ofType:@"json"]; //==Json数据 NSData *dataArea=[NSData dataWithContentsOfFile:pathArea]; //==JsonObject //将data 转换成json数据 N

nodejs写入json文件,格式化输出json的方法

假如我需要把data序列化成json字符串,然后写入data.json文件中,代码如下: 1 let str = JSON.stringify(data) 2 3 fs.writeFile('data.json',str,function(err){ 4 if (err) {res.status(500).send('Server is error...')} 5 }) 入json文件后,都会出现很恶心的一行式,看看 不能忍对不对!!! Vanilla JS的JSON.stringify()是可

jQuery ajax读取本地json文件

json文件 { "first":[ {"name":"张三","sex":"男"}, {"name":"李四","sex":"男"}, {"name":"王武","sex":"男"}, {"name":"李梅"

php读取修改json文件

//判断文件是否存在 1 <?php 2 //判断文件是否存在 3 if(file_exists("login/userinfo.json")){ 4 echo "文件存在"; 5 } 6 else{ 7 echo "文件不存在"; 8 } 9 $filename="login/userinfo.json"; //取得json文件的属性值 1 $js=file_get_contents($filename); 2 $js