支持版本:jsoncpp-src-0.5.0
版本不通可能略有差异,根据具体版本情况而定
1.介绍

JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation);轻量级的文本数据交换格式;独立于语言和平台
2.头文件:

jsonCpp所有对象、类名都在namespace json中,使用时要包含json.h以及其下包含的头文件(一共8个头文件)
3.语法规则

1)数据在名称/值对中
        2)数据由逗号分隔
        3)大括号 {} 保存对象
        4)中括号 [] 保存数组,数组可以包含多个对象
        5)每一对象最后一数据不写逗号
        6)空值:小写null

4.JSON 值可以是:

1)数字(整数或浮点数)
        2)字符串(在双引号中)
        3)逻辑值(true 或 false)
        4)数组(在中括号中)
        5)对象(在大括号中)
        6)null

5.jsonCpp包含的class

jsonCpp主要包含三种类型的class:value、reader、write。
        1)Json::Value     用来表示Json中的任何一种value抽象数据类型
        2)Json::Reader    可以通过对Json源目标进行解析,得到一个解析好了的Json::Value,通常字符串或者文件输入流可以作为源目标。
        3)Json::Writer     和 Json::Reader相反,是把Json::Value对象写到对象(字符串或者文件输入流)中;Json::Writer    为纯虚类,并不能直接使用。需要使用其子类:Json::FastWriter(快,最常用)、Json::StyledWriter、Json::StyledStreamWriter;

6.函数解读

1. ofstream是从内存到硬盘(将内存数据写入磁盘),ifstream是从硬盘到内存(将磁盘数据读到内存),其实所谓的流缓冲就是内存空间

1)ifstream成员函数:ifstream::open
              void open(const char* filename,int mode)
               函数参数:filename 要打开文件的文件名;mode 打开文件的方式:格式ios::binary

2)ofsream成员函数:ofstream::open
              void open(const char* filename)
              函数参数:filename 要打开文件的文件名;

3) reader成员函数:reader.parse
                ifstream is;
                Json::Value root;
                形式:reader.parse(is, root)
                reader将Json字符串解析到root,root将包含Json里所有子元素

4)value成员函数(常用)

形式:Json::Value root;

1.root.append(new_item);      //插入数组成员 
                2.root[device0].asInt();            //获取整形数据
                3.root[device0].asString()/asBool()/asDouble();   //获取字符串/布尔类型/浮点数类型数据
                4.root[device0].isString()/isBool()/isDouble()/isNull();    //判断数据是否是字符串/布尔类型/浮点数类型/空数据
                5.root.toStyledString()             //输出信息
                        1.不使用open指定输出位置,默认输出到控制台;
                        2.通过open指定输出位置,再执行此函数将数据输出到指定的输出位置

输出:(为减少代码量,3和4未罗列)

JSON学习一(基础)相关推荐

  1. Spring Boot学习笔记-基础(2)

    Spring Boot学习笔记-基础(2) Spring Boot 优点: – 快速创建独立运行的Spring项目以及与主流框架集成 – 使用嵌入式的Servlet容器,应用无需打成WAR包 – st ...

  2. MySQL学习笔记-基础篇1

    MySQL 学习笔记–基础篇1 目录 MySQL 学习笔记--基础篇1 1. 数据库概述与MySQL安装 1.1 数据库概述 1.1.1 为什么要使用数据库 1.2 数据库与数据库管理系统 1.2.1 ...

  3. 爬虫学习:基础爬虫案例实战

    爬虫学习:基础爬虫案例实战 文章目录 爬虫学习:基础爬虫案例实战 一.前言 二.案例实战 任务一:爬取列表页 任务二:爬取详细页 任务三:保存爬取数据 任务四:利用多进程提高效率 三.补充一点 四.最 ...

  4. Redis学习笔记①基础篇_Redis快速入门

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...

  5. Python零基础速成班-第8讲-Python文件操作File IO、高级文件处理模块shutil、CSV、JSON、多线程基础

    Python零基础速成班-第8讲-Python文件操作File I&O.高级文件处理模块shutil.CSV.JSON.多线程基础 学习目标 文件操作File I/O 高级文件处理模块shut ...

  6. MySQL学习笔记-基础篇2

    MySQL学习笔记-基础篇2 目录 MySQL学习笔记-基础篇2 8.子查询 8.1 需求分析与问题解决 8.1.1 实际问题 8.1.2 子查询的基本使用 8.1.3 子查询的分类 8.2 单行子查 ...

  7. 《繁凡的深度学习笔记》前言、目录大纲 一文让你完全弄懂深度学习所有基础(DL笔记整理系列)

    <繁凡的深度学习笔记>前言.目录大纲 (DL笔记整理系列) 一文弄懂深度学习所有基础 ! 3043331995@qq.com https://fanfansann.blog.csdn.ne ...

  8. 孙立岩 python-basic: 用于学习python基础的课件(一二三四)

    python-basic: 用于学习python基础的课件 介绍 此部分讲解Python的基础,点击目录学习对应的小节: 01-简介,概述一下python: 02-环境搭建,如何在大家自己的windo ...

  9. 周志华教授专著《集成学习:基础与算法》上市,破解AI实践难题

    [ 摘要 ]<集成学习:基础与算法>上市一周,斩获京东IT新书销量榜第一名桂冠,并拿下京东IT图书销量总榜第二名的惊人成绩. 文中有数据派独家福利哦 本书共读活动已正式开启,文末加入读者交 ...

  10. Expression Blend学习动画基础

    原文:Expression Blend学习动画基础 什么是动画(Animation)? 动画就是时间+换面的组合,画面跟着时间变化.最常见的是flash的动画,还有GIF动态图片. 动画的主要元素 时 ...

最新文章

  1. CUDA Samples: approximate image reverse
  2. squid 的配置详解 (转)--SeriesI 收藏
  3. 用户太多太杂,搞不懂怎么办?“分门别类”将拯救你
  4. @ModelAttribute运用详解
  5. Change default duration for Fiori Toast
  6. 利用 Azure Functions 实现无服务器体系结构
  7. 「BZOJ1485」[HNOI2009] 有趣的数列 (卡特兰数列)
  8. WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.
  9. NTP组播模式配置和日志信息发送到Linux日志主机的配置
  10. 非华为电脑配对华为手机(RMB+5899¥)
  11. 判断一个数是偶数还是素数 做相应处理并排序输出
  12. 详解解决CAS机制中ABA问题的AtomicStampedReference
  13. 总结了200道经典的机器学习面试题(附参考答案)
  14. webpack5 入门学习笔记(四)性能优化
  15. SSM | Spring
  16. 计算机根号的3次方怎么,excle 开几次方|excel中咋开3次根号啊
  17. autocad不能画图_记住这10个cad画图技巧,轻松精通cad
  18. 各种Lisp系语言大检阅
  19. 个人申请微信支付接口教程(免签约支付)
  20. 学习 Go 语言 0x04:《Go 语言之旅》中切片的练习题代码

热门文章

  1. 华为网管地址配置实验
  2. linux 命令行高亮显示
  3. 返回值取vector容器的前n个元素
  4. application-dev.yml、application-test.yml、application-prod.yml的区别
  5. 把时间沉淀到自己的热爱里 | Kagol 的 2022 年终总结
  6. Spring cloud 多种限流方案
  7. SQLserver2008R2详细安装教程
  8. PLC选型应考虑哪些因素
  9. Outlook代收发其他邮箱(gmail, qqmail, aliyun, 163)
  10. 接口开发及技术负责人的职责随笔