C++ 读写Json文件

这篇具有很好参考价值的文章主要介绍了C++ 读写Json文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.JSON简介 

2.结构形式

2.1 键值形式

 2.2键-数组形式

2.3 键-值(键-值)形式

3. C++实现 

3.1 读取JSON文件

3.2 写入JSON文件


1.JSON简介 

JSON文件无论是在web开发、客户端开发、服务端等开发中都是应用比较广泛的的第一种轻量级数据交换格式,非常方便阅读和编写。也是开发、测试、运维人员必备的一项技能!!!

JSON是一种用于共享数据的开放标准文件格式,它使用人类可读的文本来存储和传输数据。JSON 文件以 .json 扩展名存储。JSON 需要较少的格式,是 XML 的一个很好的替代方案。JSON 源自 JavaScript,但它是一种独立于语言的数据格式。许多现代编程语言都支持 JSON 的生成和解析。 

JSON 数据以 key/value 对形式写入。键和值由中间的冒号(:) 分隔,键在左边,值在右边。不同的键/值对由逗号 (,) 分隔。键是一个用双引号括起来的字符串,例如“name"。这些值可以是以下类型。

2.结构形式

2.1 键值形式

键值的形式,如下:

{   "name": "peter",    "age": 20,    "favoriteFruits": "apple" }

 2.2键-数组形式

键-数组的形式如下:

{   "name": ["peter", "tomy", "tina"]   "age": 20,    "favoriteFruits": "apple" }

2.3 键-值(键-值)形式

键-(键-值)的形式,如下:

{   "peter ": {"20": "apple"},   "tomy": {"21": "pie"}, }

3. C++实现 

3.1 读取JSON文件

假如,我们是先有一个Json文件想要读取,名称`type.json`,格式如下:

{  "NX": ["xxx M", "xxx S"],  "RK": { "name1": "NANO", "age"  : 12 },  "ubuntu16": 25}

使用C++读取,方式如下:

#include <iostream>
#include <fstream>
#include "jsoncpp.cpp"

int main()
{
    Json::Reader reader;
    Json::Value root;       // 创建一个根节点用来接收解析出来的字符串
    std::ifstream inff("camtype.json", std::ios::binary);  // 读取当前文件
    if (!inff.is_open())    // 判断文件是否正常打开
    {
        std::cout << "Error Opening! ";
        return 0;
    }

    if (reader.parse(inff, root))  // reader将Json字符串解析到root,root将包含Json里所有子元素   
    {
          for (unsigned int i = 0; i < root["NX"].size(); i++) {   // 读取:"NX": ["xxx M", "xxx S"]
          std::string ach = root["NX"][i].asString();
          std::cout << ach << '\t';     
        }

        int ubuntu16 = root["ubuntu16"].asInt();            // 读取:"ubuntu16": 25   
        std::cout << std::endl << ubuntu16 << std::endl;
      
        std::string name = root["RK"]["name1"].asString();  // 读取:"RK": { "name1": "NANO", "age"  : 12}
        std::cout << name << std::endl;
    }
    return 0;
}

3.2 写入JSON文件

在实际开发中,我们需要将我们的数据存储在Json文件中,因此,我们需要先创建键值形式的数据,然后再写入Json文件中,C++代码如下: 

#include <iostream>
#include <fstream>
#include "jsoncpp.cpp"
int main()
{
     Json::Value root1;       // 创建根节点
     root1["name"] = Json::Value("lian");   // 从根节点添加键-值对  "name": "lian"
     root1["age"] = Json::Value("21");      // "age": "21" 
        
     Json::Value root2;      // 创建子根节点
     root2["father"] = Json::Value("lll");   // 为子根节点添加键-值对  "father": "lll"
     root2["monther"] = Json::Value("ccc");  // "mother": "ccc"
     root2["syster"] = Json::Value("lyy");   // "sister": "lyy"
     root1["family"] = Json::Value(root2);   // 将子根节点添加到根节点种
                                             // "family":{"father": "lll", "mother": "ccc", "sister": "lyy"}
     root1["hobby"].append("sing");          // 添加键-数组形式
     root1["hobby"].append("run");           // hobby:[sing, run, taichi]
     root1["hobby"].append("Tai Chi");
    
    Json::StyledWriter sw;  // 创建一个带格式的Json对象
    std::ofstream omm;      // 创建文件对象
    omm.open("demo.json", std::ios::out | std::ios::app);   // 创建文件
    if (!omm.is_open())
        std::cout << "error:can not find or create the file." << std::endl;
    omm << sw.write(root1);   // 将带格式的json对象的 根节点写入文件中
    omm.close();
    return 0;
}

 执行代码后,可以生成一个demo.json文件,形式如下:文章来源地址https://www.toymoban.com/news/detail-621979.html

{    "name": "lian",    "age": "21",    "family": {"father": "lll", "mother": "ccc", "sister": "lyy"}    "hobby": [sing, run, taichi]}

到了这里,关于C++ 读写Json文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于Vscode中C++的json配置文件解读

    g++ 、gcc能在本地终端中运行一个c/cpp文件         查看gcc,g++版本           gcc运行c程序 g++运行cpp程序 如果终端能运行,而vscode中运行不了大概率就是编译命令的问题了 打开设置 进入settings.json全局文件   修改运行命令    如果这步之后能成功运行,下面的都可以不用

    2024年02月09日
    浏览(40)
  • 头歌:Python开发技术—文件和异常3( 答案+详细注释)第1关:读取文件内容+第2关:素数写入文件+第3关:输出文件目录+第4关:读写json文件

    自己敲一遍这个代码,注释我写的超级详细,一定可以明白! 内容原创,请勿转载  知识点学习参考: 1.基本读写常用指令: 一文搞懂Python文件读写 - 知乎 (zhihu.com) 2.文件遍历知识总结:  (205条消息) python遍历文件夹下的所有文件_python遍历d盘下面所有文件(排除掉文件夹)

    2024年02月05日
    浏览(217)
  • python之json文件读写操作

    python操作json文件通常有4中方法: json.loads json.load json.dumps json.dump json.loads 将json对象转化为python对象,也就是将字符串转换为字典类型,例如: json.load 对json文件进行读取 也可以通过json.loads读取,但是需要把文件内容转换为二进制流,json.loads主要是对数据流进行转换为jso

    2024年02月10日
    浏览(48)
  • Unity自带方法读写JSON文件

    最近使用JSON文件保存模型表情数据,简单记录一下。 首先自定义数据类,需要记录表情每帧的所有BlendShape及时间戳: 使用Unity自带的JSON读写方法: 保存与读取JSON文件: 简单记录,部分变量与方法未展示,仅供参考。

    2024年02月12日
    浏览(49)
  • c++ nlohmann/json 及修改json文件中个别关键字 JSON的三种格式https://blog.csdn.net/daxiong0816/article/details/125132404

    (2条消息) nlohmann json使用_nlohmann::json_蜗牛单行道的博客-CSDN博客json为JavaScript object notation 是一种数据格式,逐渐替换掉了传统的xml 。json数据格式的属性名称和字符串值需要用双引号引起来,用单引号或者不用引号会导致读取数据错误。json的另外一个数据格式是数组,和jav

    2024年02月08日
    浏览(55)
  • 使用python读写txt和json(jsonl)大文件

    在深度学习方向,尤其是NLP领域,最重要的就是和海量的文字打交道,不管是读取原始数据还是处理数据亦或是最终写数据,合理的读写文件是极为重要的,这篇博客用以记录一下工作中学习到的对大文件读写的过程。 目录 读写txt文本文件 读写JSON文件 读写JSONL文件 遇到的

    2024年02月05日
    浏览(44)
  • 07-1_Qt 5.9 C++开发指南_文件系统及文件读写_文本文件读写(使用 QTextStream 进行文件读写更为方便)

    文本文件是指以纯文本格式存储的文件,例如用 Qt Creator 编写的 C++程序的头文件 (.h 文件)和源程序文件 (.cpp 文件)。HTML 和 XML 文件也是纯文本文件,只是其读取之后需要对内容进行解析之后再显示。 Qt 提供了两种读写纯文本文件的基本方法, 一种是用 QFile 类的 IODevice 读写

    2024年02月13日
    浏览(53)
  • Pyspark读写csv,txt,json,xlsx,xml,avro等文件

    读: 读: 写: 读: 写: 读: 写: 读: 写: 读: 写: 读: 写: 读: 写: 读: 写:

    2024年02月07日
    浏览(42)
  • python 读写 json,csv,txt,docx,xlsx,xls文件大全

    最近再处理数据的时候,总会用到读写json,csv,xlsx和xls文件代码 这里就做个总结记录一下 扩展: json.loads(line)和 json.load(line) 通用写法: 1.2.1 list类型写入 1.2.2 dict类型写入 注意:json.dump()将Python对象序列化为JSON格式,并将其写入文件中。 扩展:json.dumps()和 json.dump() 2.2.1

    2024年02月06日
    浏览(44)
  • ASP.NET Core 3.1系列(4)——读写配置文件appsettings.json

    在大多数的应用程序中,一些参数需要写在配置文件里,以此增加系统的灵活性。在 ASP.NET 时代,配置参数一般会写在 web.config 文件中,其本质上是对 XML 文件的读取和写入。而在 ASP.NET Core 中,配置文件变成了 appsettings.json 文件。相较于 XML , JSON 文件更加轻量且灵活,下面

    2024年02月06日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包