添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

JSON介绍

Json是一种轻量级的 数据交换格式 (也叫 数据序列化方式 )。Json采用完全 独立于编程语言 的文本格式来存储和表示数据。简介和清晰的层次结构使得Json成为理想的交换格式。易于阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

跟XML相比,Json的优势在于格式简介短小,特别是在处理大量复杂数据的时候

Json是一个优秀的第三方库。其中JSON OF MODERN C++是由德国大牛nlohmann编写的,所以命名空间的名字也是 nlohmann

Json的特点

  • 直观的语法
  • 整个代码由一个头文件组成,没有子项目,使用方便
  • 使用C++ 11标准编写
  • 使用json像使用STL容器一样
  • STL和json可以互相转换
  • 所有类都经过严格的单元测试,较为健壮

Json源码: 点此跳转

Json的结构

  • “名称/值”对的集合: js["键"] = {“值”};
  • 值的有序列表: js["键”] = {值,值,值};

Json形式

  • 对象是一个无序的“‘名称/值’ 对”集合。
    在这里插入图片描述

  • 数组是值的有序集合。值可以使双引号括起来的字符串、数值、true、false、null、对象和数组。当然,也可以套娃
    在这里插入图片描述
    在这里插入图片描述

使用Json

包含json头文件

使用就简单的包含以下头文件,就可以使用 json 提供给我们的接口了。

#include"json.hpp"
using json = nlohmann::json;

json数据序列化

序列化就是把我们想要打包的数据或者对象直接处理成Json字符串

  1. 普通数据序列化

    void func1()
    json js;
    js["msg_type"] = 2;
    js["form"] = "zhang san";
    js["to"] = "li si";
    js["msg"] = "hello,world!";
    cout << js << endl;
    输出如下:
    {"msg":"hello,world!","form":"zhang san","msg_type":2,"to":"li si"}
    可以看到,是无序的
    
  2. 容器序列化

    void func3()
    json js;
    //序列化一个容器
    vector<int> vec;
    vec.push_back(1);
    vec.push_back(2);
    js["list"] = vec;
    map<int, string> m;
    m.insert({ 1,"华山" });
    m.insert({ 2,"泰山" });
    js["path"] = m;
    cout << js << endl;
    输出如下:
    {"list":[1,2],"path":[[1,"华山"],[2,"泰山"]]}
    
  3. 转化成字符串

    //转成字符串,网络用
    string sendbuf = js.dump();
    cout << sendbuf.c_str() << endl;
    

    Json的数据反序列化

    void reserve(string& recvbuf)
    	//把字符串转换成json对象
    	json jsbuf = json::parse(recvbuf);
    	cout << jsbuf["msg"] << endl;
    	cout << jsbuf["id"] << endl;
    	auto arr = jsbuf["id"];
    	auto msgjs = jsbuf["msg"];
    	cout << msgjs["zhang san"] << endl;
    	vector<int> vec = jsbuf["list"];
    
    [1] 施磊.集群聊天服务器.图论科技.2020.7.
    [2] JSON C语言开发指南.
    在PyCharm上安装第三方库
    点击PyCharm左下方的Terminal,执行pip命令,安装第三方库rdflib、request(由于后续运行的过程中报错,所以也安装了它)
    相关解释见代码注释
    # 导入第三方库
    import rdflib
    from rdflib import RDF, Namespace, URIRef, Literal
    from rdflib.names
    				
    第三方类-JSON-Jackson 一、准备工作 首先去官网下载Jackson工具包,下载地址http://wiki.fasterxml.com/JacksonDownload。Jackson有1.x系列和2.x系列,截止目前2.x系列的最新版本是2.2.3,2.x系列有3个jar包需要下载: jackson-core-2.2.3.jar(核心jar包,下载地址) jackson-annotat...
    //    使用第三方类JSONKit //    NSString * path = [[NSBundle mainBundle] pathForResource:@"test.json" ofType:nil]; //    NSData * data = [NSData dataWithContentsOfFile:path]; //    1、JSON

    本专栏主要从零到一对WEB渗透测试进行详介绍,主要涉及渗透测试基础知识、漏洞原理刨析、渗透测试漏洞挖掘、业务逻辑漏洞挖掘、业务逻辑漏洞示例、安全工具等方方面面的内容,同时保持长时间的更新维护,预计将在500篇实现系列完结 订阅声明:严禁使用专栏技术进行非法攻击,违者相关法律自行承担,博主概不负责

    【神兵利器】——207、Burpsuite之JsonDecode