精华内容
下载资源
问答
  • 一、json文件简介 1、json文件 2、json与其他存储数据方式比较 二、C++操作json文件 1、jsoncpp 库下载 2、C++从字符串中读取json 3、C++从文件中读取json 4、C++写入json文件 5、主函数 附:jsoncpp库配置...

    目录

    前言

    一、json文件简介

    1、json文件

    2、json与其他存储数据方式比较

    二、C++操作json文件

    1、jsoncpp 库下载

    2、C++从字符串中读取json

    3、C++从文件中读取json

    4、C++写入json文件

    5、主函数

     附:jsoncpp库配置

    1、解压并转移

    2、配置属性

    3、配置项目


    前言

    json文件是比较轻量级的文件,格式简单,使用方便。用来存放信息相比其他方式有自己得天独厚的优势。

    今天给大家分享的是如何利用C++来操作json文件。

    如果你知道如何使用jsoncpp类库,可以不用看附,如果第一次使用,请先到最后,将环境配置好,再进行操作。

    有人说用这篇文章中配置的方法有问题。我想大家应该是有些小细节跟我做的不一样,为此,我为大家配置好一个,大家可以加群:326866692下载使用。

    包括jsoncpp库也在群文件中。

     

     

    一、json文件简介

    1、json文件

    JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

    2、json与其他存储数据方式比较

    为什么要用json文件呢?

    我们最常使用的存储数据的方式有很多,比如利用txt文件存,利用xml存,利用word存,利用Excel存,如果我们要求比较高,还可以使用数据库存。

    相对于txt,word来说,json格式更加明确,获取重要信息非常方便。

    相对于xml来说,json格式更加简洁,存储同样的文件,花费的内存更小。

    相对于Excel来说,json更适合存储字符类文件。Excel相当于比较简单的数据库了。

    相对于数据库来说,json更加方便,数据库我们还需要做一些设置,安装一些软件。json可以直接使用。

    二、C++操作json文件

    1、jsoncpp 库下载

    大家可以自己上网下载jsoncpp 库,也可以加群:326866692下载;

    群二维码

    2、C++从字符串中读取json

    json样式比较多,这里分享两种,一种比较直接简单的,一种稍微有些复杂的。

    1.简单json样式

    我们定义一个字符串来保存如下json数据:

    {
        "name" : "shuiyixin",
        "age" : "21",
        "sex" : "man"
    }

    读取代码如下:

    void readStrJson()
    {
    	//字符串  
    	const char* str =
    		"{\"name\":\"shuiyixin\",\"age\":\"21\",\"sex\":\"man\"}";
    
    
    	Json::Reader reader;
    	Json::Value root;
    
    	//从字符串中读取数据  
    	if (reader.parse(str, root))
    	{
    		string name = root["name"].asString();
    		int age = root["nomen"].asInt();
    		string sex = root["sex"].asString();
    		cout << name + "," << age << "," << sex <<  endl;
    	}
    
    }

    2.复杂json样式

    所谓复杂,就是说,json里面分好几层,上面那个简单的只有一层,json数据如下:

    {
        "name":"shuiyixin",
        "major":[
        {
            "AI":"MachineLearning"
        },
        {
            "AI":"DeepLearning"
        },
        {
            "AI":"ComputerVision"
        }]
    }

    读取代码如下:

    void readStrProJson()
    {
    	string strValue = "{\"name\":\"shuiyixin\",\"major\":[{\"AI\":\"MachineLearning\"},{\"AI\":\"DeepLearning\"},{\"AI\":\"ComputerVision\"}]}";
    	Json::Reader reader;
    	Json::Value value;
    	if (reader.parse(strValue, value))
    	{
    		string out = value["name"].asString();
    		cout << out << endl;
    		const Json::Value arrayObj = value["major"];
    		for (unsigned int i = 0; i < arrayObj.size(); i++)
    		{
    			out = arrayObj[i]["AI"].asString();
    			cout << out<<endl;
    		}
    	}
    }
    

     

    3、C++从文件中读取json

    从字符串中读取json文件只是为了让大家能够了解json文件,我们最终还是要从文件中读取的。

    这个读取的json文件,大家可以通过下面的写json文件自己创建一个。

    以下面这个json文件为例:

    {
       "age" : 21,
       "friends" : {
          "friend_age" : 21,
          "friend_name" : "ZhaoWuxian",
          "friend_sex" : "man"
       },
       "hobby" : [ "sing", "run", "Tai Chi" ],
       "name" : "shuiyixin",
       "sex" : "man"
    }
    

    读取代码如下:

    void readFileJson()
    {
    	Json::Reader reader;
    	Json::Value root;
    
    	//从文件中读取,保证当前文件有demo.json文件  
    	ifstream in("demo.json", ios::binary);
    
    	if (!in.is_open())
    	{
    		cout << "Error opening file\n";
    		return;
    	}
    
    	if (reader.parse(in, root))
    	{
    		//读取根节点信息  
    		string name = root["name"].asString();
    		int age = root["age"].asInt();
    		string sex = root["sex"].asString();
    
    		cout << "My name is " << name << endl;
    		cout << "I'm " << age << " years old" << endl;
    		cout << "I'm a " << sex << endl;
    
    		//读取子节点信息  
    		string friend_name = root["friends"]["friend_name"].asString();
    		int friend_age = root["friends"]["friend_age"].asInt();
    		string friend_sex = root["friends"]["friend_sex"].asString();
    
    		cout << "My friend's name is " << friend_name << endl;
    		cout << "My friend's sex is "<<friend_sex << endl;
    		cout << "My friend is " << friend_age << " years old" << endl;
    
    		//读取数组信息  
    		cout << "Here's my hobby:" << endl;
    		for (unsigned int i = 0; i < root["hobby"].size(); i++)
    		{
    			string ach = root["hobby"][i].asString();
    			cout << ach << '\t';
    		}
    		cout << endl;
    
    		cout << "Reading Complete!" << endl;
    	}
    	else
    	{
    		cout << "parse error\n" << endl;
    	}
    
    	in.close();
    }
    

    4、C++写入json文件

    除了读,我们经常还会写入json文件,json文件如下:

    {
       "age" : 21,
       "friends" : {
          "friend_age" : 21,
          "friend_name" : "ZhaoWuxian",
          "friend_sex" : "man"
       },
       "hobby" : [ "sing", "run", "Tai Chi" ],
       "name" : "shuiyixin",
       "sex" : "man"
    }
    

    写入代码如下:

    void writeFileJson()
    {
    	//根节点  
    	Json::Value root;
    
    	//根节点属性  
    	root["name"] = Json::Value("shuiyixin");
    	root["age"] = Json::Value(21);
    	root["sex"] = Json::Value("man");
    
    	//子节点  
    	Json::Value friends;
    
    	//子节点属性  
    	friends["friend_name"] = Json::Value("ZhaoWuxian");
    	friends["friend_age"] = Json::Value(21);
    	friends["friend_sex"] = Json::Value("man");
    
    	//子节点挂到根节点上  
    	root["friends"] = Json::Value(friends);
    
    	//数组形式  
    	root["hobby"].append("sing");
    	root["hobby"].append("run");
    	root["hobby"].append("Tai Chi");
    
    	//直接输出  
    	//cout << "FastWriter:" << endl;
    	//Json::FastWriter fw;
    	//cout << fw.write(root) << endl << endl;
    
    	//缩进输出  
    	cout << "StyledWriter:" << endl;
    	Json::StyledWriter sw;
    	cout << sw.write(root) << endl << endl;
    
    	//输出到文件  
    	ofstream os;
    	os.open("demo.json", std::ios::out | std::ios::app);
    	if (!os.is_open())
    		cout << "error:can not find or create the file which named \" demo.json\"." << endl;
    	os << sw.write(root);
    	os.close();
    
    }

    要注意的是:

    1.如果要写入的文件不存在,会自动创建该文件;

    2.如果文件存在,写入过程不会覆盖文件中原有数据,而是将新数据写在原有数据后面。

    5、主函数

    所有的功能模块都写好啦,剩下就是主函数啦:

    #include <string>  
    #include <json.h>
    #include <iostream>  
    #include <fstream>  
    using namespace std;
    
    void readStrJson(); //从字符串中读取JSON  
    void readStrProJson(); //从字符串中读取JSON(内容复杂些)  
    void readFileJson(); //从文件中读取JSON 
    void writeFileJson();  //将信息保存为JSON格式  
    
    int main(int argc, char *argv[])
    {
    	writeFileJson(); //写入json
    
    	readFileJson(); //从文件中读取JSON 
    
    	cout << "\n\n";
    
    	readStrJson();  //从字符串中读json
    
    	cout << "\n\n";
    
    	readStrProJson();//从字符串中读取JSON(内容复杂些)  
    	
    	system("pause");
    	return 0;
    }

     附:jsoncpp库配置

    jsoncpp库配置与opencv配置原理相同,大家可以看一下下面的教程:

    opencv配置(win10+VS2015+OpenCV3.1.0) :https://blog.csdn.net/shuiyixin/article/details/80386022

    不过jsoncpp库的内容比较少,配置没有opencv那么麻烦:

    1、解压并转移

    首先将库解压,将下面的两个文件夹复制到你创建的项目下面

    将库解压
    将两个文件夹复制到自己创建的项目中

    2、配置属性

    点击调试,并点击项目属性

    点击调试->项目属性
    选择VC++目录中的包含目录,点击修改
    将includ文件夹下的json文件路径复制到这里,并保存

    3、配置项目

    将src文件夹下的lib_json文件夹下的cpp文件,添加到源文件中:

    找到src文件夹->lib_json文件夹->所有cpp文件,并复制

     

    添加到源文件中

    然后就可以使用啦。

     

    展开全文
  • 原生js读取json文件

    万次阅读 多人点赞 2019-05-23 14:43:32
    1.首先编写一个json文件:demo.json [ { "name":"张三", "sex":"男", "email":"zhangsan@123.com" }, { "name":"李四", "sex":"男", "email":"lisi@123.com" }, { "name":"王五", "sex":"女", ...

    注:浏览器是肯定不能获取用户浏览器客户机的本地文件的,所以这个json文件和html文件是放在一个tomcat上或者nginx上的,否则会出现跨域问题

    1.首先编写一个json文件:demo.json

    [ 
    { 
    "name":"张三", 
    "sex":"男", 
    "email":"zhangsan@123.com" 
    }, 
    { 
    "name":"李四", 
    "sex":"男", 
    "email":"lisi@123.com" 
    }, 
    { 
    "name":"王五", 
    "sex":"女", 
    "email":"wangwu@123.com" 
    } 
    ] 

    2.js读取json文件

    <script>
    		window.onload = function () {
                var url = "demo.json"/*json文件url,本地的就写本地的位置,如果是服务器的就写服务器的路径*/
                var request = new XMLHttpRequest();
                request.open("get", url);/*设置请求方法与路径*/
                request.send(null);/*不发送数据到服务器*/
                request.onload = function () {/*XHR对象获取到返回信息后执行*/
                    if (request.status == 200) {/*返回状态为200,即为数据获取成功*/
                        var json = JSON.parse(request.responseText);
                        for(var i=0;i<json.length;i++){
                        	console.log(json[i].name);
                        }
                        console.log(json);
                    }
                }
           }
    	</script>

    3.我的文件位置

    4.用Ajax也是可以的

    <script type="text/javascript">
        var Ajax = function ()
        {
            $.getJSON ("demo.json", function (data)
            {
                $.each (data, function (i, item)
                {
                   console.log(item.name);
                });
            });
        }();
    </script>
    $.ajax({
    				url: "demo.json",//json文件位置,文件名
    				type: "GET",//请求方式为get
    				dataType: "json", //返回数据格式为json
    				success: function(data) {//请求成功完成后要执行的方法 
    				   //给info赋值给定义好的变量
    				   var pageData=data;
    				   for(var i=0;i<data.length;i++){
    					   console.log(pageData[i].name);
    				   }
    				}
    			})

     

    展开全文
  • jackson Read Write 读取 json 文件和写入 json 文件 ...有时候需要将 json写入磁盘或者由此片读取,这里提供两个例子:创建json对象并写入文件、读取 json文件并转换为 json对象,例子如下: 创建 JSON对象,...

    jackson Read Write 读取 json 文件和写入 json 文件

    jackson 可以由这里获得 http://repo1.maven.org/maven2/com/fasterxml/jackson/

    有时候需要将 json 写入磁盘或者由此片读取,这里提供两个例子:创建json对象并写入文件、读取 json 文件并转换为 json 对象,例子如下:

    创建 JSON 对象,并写入磁盘文件 c:/temp/test.json

    package test;
    
    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.JsonNode;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.databind.node.ArrayNode;
    import com.fasterxml.jackson.databind.node.ObjectNode;
    
    import java.io.FileWriter;
    import java.io.IOException;
    
    public class WriteJSON
    {
    
      public WriteJSON()
      {
    
      }
    
      public static void main(String[] args)
      {
        try
        {
          ObjectMapper mapper = new ObjectMapper();
    
          // Create the root node
          ObjectNode root = mapper.createObjectNode();
          // Create a child node
          ObjectNode node1 = mapper.createObjectNode();
          node1.put("nodekey1", 1);
          node1.put("nodekey2", 2);
          // Bind the child nodes
          root.set("child", node1);
          // Array of nodes
          ArrayNode arrayNode = mapper.createArrayNode();
          arrayNode.add(node1);
          arrayNode.add(1);
          // Bind array node
          root.set("arraynode1", arrayNode);
          root.set("arraynode2", arrayNode);
    
          try (FileWriter file = new FileWriter("c:/temp/test.json"))
          {
            file.write(root.toString());
            file.flush();
          }
          catch (IOException e)
          {
            e.printStackTrace();
          }
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }
      }
    }
    

     

    数据以 json 格式存储在文件 c:/temp/data.json 中,用 jackson 的 ObjectMapper 对象载入,用 JsonNode 对象即可进行读取或者存取操作。

    c:/temp/data.json 文件内容:

    {"data":{"birth_day":7,"birth_month":6},"errcode":0,"msg":"ok","ret":0}

    java 代码如下:

    import java.io.File;
    import java.io.IOException;
    
    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.JsonNode;
    import com.fasterxml.jackson.databind.ObjectMapper;
    
    public class ReadJSON
    {
    
      public static void main(String[] args)
      {
        getJsonFile();
    
      }
    
      public static String getJsonFile()
      {
        String strResult = "";
        ObjectMapper objMapper = new ObjectMapper();
    
        try
        {
          // 指定文件
          String strText = "c:/temp/test.json";
          JsonNode rootNode = objMapper.readTree(new File(strText));
          // 指定某一个节点
          String strData = rootNode.get("child").toString();
    
          System.out.println(rootNode.toString());
          System.out.println(strData);
    
          // 获得 json 字符串
          strResult = rootNode.toString();
        }
        catch (JsonProcessingException e)
        {
          e.printStackTrace();
        }
        catch (IOException e)
        {
          e.printStackTrace();
        }
    
        return strResult;
      }
    
    }
    

    控制台输出结果:

    {"data":{"birth_day":7,"birth_month":6},"errcode":0,"msg":"ok","ret":0}
    {"birth_day":7,"birth_month":6}

     

     

     

    blog.csdn.net/joyous/article/details/50532149

    Q群236201801讨论

     

     

    展开全文
  • C# 读取json文件与写json文件

    千次阅读 2019-10-28 16:13:30
    在开发中,经常会用到这个问题,仅做一个记录 使用nuget获取Newtonjson.Json 引入: using Newtonsoft.Json;...读取json文件 string wordTemplateName = "WordTemplate.json"; StreamReade...

    在开发中,经常会用到这个问题,仅做一个记录

    使用nuget获取Newtonjson.Json

    引入:

    using Newtonsoft.Json;
    using Newtonsoft.Json.Linq;

    读取json文件

                string wordTemplateName = "WordTemplate.json";
                StreamReader sr = File.OpenText(wordTemplateName);
                string jsonWordTemplate = sr.ReadToEnd();
                wordTemlate = JsonConvert.DeserializeObject<WordTemplateModel>(jsonWordTemplate);

    写json文件

    将model序列化之后,写入文件即可

     string json = JsonConvert.SerializeObject(_ReportModel);

     

    展开全文
  • 1、首先的思路是.txt文件转为.json文件 用fileReader 来对数据进行处理 2、处理后得到一个json数组对象,但是不能每次用到的时候都去读取.txt文件,毕竟里面的数据可不少,还是本地生成一个json文件 function ...
  • 导出JSON文件 // 插件安装 import FileSaver from 'file-saver' import axios from 'axios' 导出代码 const data = JSON.stringify('存放JS数组或者对象') const blob = new Blob([data], { type: 'application/...
  • PHP数组数据写入JSON文件 &lt;?php // 生成一个PHP数组 $data = array(); $data['name'] = 'admin'; $data['pwd'] = '123456'; // 把PHP数组转成JSON字符串 $json_string = json_encode($data); // 写入...
  • 利用nodejs对本地json文件进行增删改查

    万次阅读 多人点赞 2018-04-11 11:47:41
    nodejs的文件系统,接触过node的对node的文件系统肯定不会陌生,这两天我就在思考一个问题,我是否可以在本地操作我的本地json文件,这样一个本地的文本数据库就有了,如果是便签之类,记录的软件,我完全可以不用连...
  • 这是通过抓包工具抓取到的json文件 然后json文件在线解析,把内容复制粘贴进去解析得出下面的内容(右边框内) json文件的地址url="http://www.lagou.com/lbs/getAllCitySearchLabels.json" 用...
  • 解析json文件,从json文件中提取信息

    千次阅读 2018-12-13 14:37:30
    使用labelme标注工具标注生成的文件为json文件,要使用标注结果,需要提取标注结果中的坐标信息,并将结果生成label。 代码如下: import numpy as np import os import json import io import PIL.Image def ...
  • 1.创建一个json文件:首先在src/main/下建一个assets文件夹,然后再assets下建一个xxxx.json文件,把数据按照json格式写到文件中即可 我的json文件名为province.jason,数据格式如下: { "province": [ {"id":1...
  • JSON文件以及Python对JSON文件的读写

    千次阅读 2018-10-07 10:43:09
    一,什么是JSON文件 JSON和XML都是互联网上数据交换的主要载体。 在JSON出现之前,大家一直用XML来传递数据。因为XML是一种纯文本格式,所以它适合在网络上交换数据。XML本身不算复杂,但是,加上DTD、XSD、XPath...
  • 追加写入 json 文件 有一个 test.json 文件,包含内容如下: { "key_1": "value_1" } 现需要追加写入 json 文件,向其中增加值,使其包含内容如下: { "key_1": "value_1", "key_2": "value_2" } Python 代码...
  • 在开发单机游戏的时候,想将游戏数据存到json文件中,但是一直查不到如何写入数据到json文件中,查api也没看到相关文件流操作的api,希望有所指点,谢谢!
  • python 读取和存入json文件 from pymongo import MongoClient import json class Json2Mongo(object): def __init__(self): self.host = '0.0.0.0' self.port = 27017 # 创建mongodb客户端 ...
  • json文件查看

    千次阅读 2019-10-23 11:18:25
    用Notpad++或者记事本打开.json文件时,数据格式不整齐,不好查看,故使用下面的方法: 在VS中打开.json文件,是一整行数据,如下: 然后进行操作:Ctrl+k+d,即可分割数据,成为下面的数据格式,方便查看。 ....
  • python读取和保存json文件

    万次阅读 多人点赞 2019-12-30 21:01:37
    json文件是一种常见的数据存储文件,比txt看着高级点,比xml看着人性化一点。 同时,json作为一种通用协议的文件格式,可以被各种语言方便地读取。所以,json非常适合用来存储结构化的数据。 json的具体介绍和使用...
  • python实现多个json文件合并到一个json文件! 1. 代码 # !/usr/bin/env python # -*- encoding: utf-8 -*- """ @author: kaifang zhang @license: Apache License @time: 2020/12/09 @contact: kaifang.zkf@dtwave-...
  • -导入之前项目根目录下的project.config.json文件: { "description": "A WePY project", "setting": { "urlCheck": true, "es6": false, "postcss": false, "minified": false }, "compileType": ...
  • data.json文件内容 { &amp;amp;quot;code&amp;amp;quot;: 0, &amp;amp;quot;msg&amp;amp;quot;: &amp;amp;quot;请求成功&amp;amp;quot;, &amp;amp;quot;data&amp;amp;quot;: [ ...
  • C# 读取Json文件

    千次阅读 2020-04-01 15:51:07
    C# 读取Json文件 C#读取Json文件并赋值给初始值 一、有Json文件如下(若用记事本编辑记得另存为-编码选择 U-TF8): 二、读取方法: using Newtonsoft.Json; using Newtonsoft.Json.Linq; /// <...
  • TS引入json文件

    千次阅读 2020-10-28 16:46:15
    TS引入json文件
  • JSON & GSON - 读取 JSON 文件

    千次阅读 2018-12-13 15:08:29
    我们拿到 JSON 文件,若想通过 java 读取其中的数据,该怎么做呢? 读前必知: IO 基础知识 FileUtils =&...1、针对小JSON文件 { "name": "ALemon", "age": ...
  • 四个问题: 1.如何生成json文件。 2.如何下载json文件。 3.下载的json中文不显示只显示编码。 4.生成的json文件里面数据格式优化。
  • JSON文件的解析

    万次阅读 2018-05-17 15:05:47
    本文主要记录一下JSON文件解析过程中的两种基本操作方式。 JSON文件的根可以是数组,也可以是对象。接下来就是基于这两种情况进行基本的JSON文件解析。 首先看以数组为根的JSON文件解析: 创建一个JSON文本文件...
  • 读取前的app.json文件 直接上代码 import json path = r"E:\MKqrcode\app.json" ## app_info 是一个字典 app_info = { 'appid': '123456', 'deptid': '123456', 'ver': '123456', 'deptname': 'qqqqqqq', '...
  • package.json 文件详解

    万次阅读 多人点赞 2019-06-13 01:32:24
    随着前端由多页面到单页面,由零散的文件到模块化开发,在一个完整的项目中,package.json 文件无处不在。首先,在项目根目录会有,其次在 node_modules 中也频现。那么这个文件到底是干嘛的,又有什么作用,今天给...
  • python读写json文件方法示例

    万次阅读 2018-10-08 11:20:33
    python写入json文件 首先,我们将python创建一个字典类型的数据data,打包为json字符串格式 data = { 'name':'ACM', 'day':'2018-11', 'place':'beijing' } json_str = json.dumps(...
  • Matlab读取json文件

    千次阅读 2019-11-30 00:21:34
    Matlab读取json文件 在matlab中,可以将数据写入json文件,却没发现读取json的函数,网上查了一下,大部分是个人写的函数,再可执行性上可能会有一些问题。最终,还是发现了一个matlab解析json文件的工具包,...
  • json文件处理

    千次阅读 2018-11-24 16:12:56
    json文件处理 什么是json JsON( JavaScript Object Notation,Js对象标记是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的s规范)的集,采用完全独立于编程语言的文本格式存储和表示数据。简洁和清晰的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 106,424
精华内容 42,569
关键字:

json文件