博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
json11入门教程
阅读量:3577 次
发布时间:2019-05-20

本文共 2099 字,大约阅读时间需要 6 分钟。

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

1.json

JSON(JavaScript Object Notation) 是一种轻量级的文本数据交换格式,易于让人阅读。同时也易于机器解析和生成。尽管 JSON 是 Javascript 的一个子集,但 JSON 是独立于语言的文本格式,并且采用了类似于 C 语言家族的一些习惯。JSON 解析器和 JSON 库支持许多不同的编程语言。几乎所有与网页开发相关的语言都有 JSON 库。JSON 比 XML 更小、更快。

🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀

2.json datatype

JSON用于描述数据结构,有以下形式存在:

  • 对象(object):一个对象以”{“开始,并以”}”结束。一个对象包含一系列非排序的名称/值对,每个名称/值对之间使用”,”分隔。
  • 名称/值(collection):名称和值之间使用”:”隔开。一个名称是一个字符串;一个值 (value)可以是双引号括起来的字符串(string)、数值(number)、true、false、null、对象(object)或者数组(array)。这些结构可以嵌套。

JSON语法规则:(1)、数据在键值对中;(2)、数据由逗号分隔;(3)、花括号保存对象;(4)、方括号保存数组。

JSON的值可以是:

  • 数值:一系列0-9的数字组合,可以为负数或者小数。还可以用”e”或者”E”表示为指数形式。数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。

  • 字符串:以""括起来的一串字符。字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。字符串(string)与C或者Java的字符串非常相似。

  • 布尔值:表示为true或者false。

  • 数组(Array):数组是值(value)的有序集合。一个数组以”[“(左中括号)开始,”]”(右中括号)结束。值之间使用”,”(逗号)分隔。数组索引从0开始。

  • 对象(object):对象是一个无序的”名称/值”对集合。一个对象以”{“开始,并以”}”结束。每个”名称”后跟一个”:”(冒号)。”名称/值”对之间使用”,”(逗号)分隔。

  • null

Json 开源库浩如烟海,不胜枚举,这里主要介绍 json11,git 地址:,使用异常简单,只需 include json11.hpp 即可。

🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃

3.json example

#include <iostream>

#include <fstream>
#include <string>
#include <vector>
#include <json11.hpp>
using nameapce json11;
int main() {
    Json my_json = Json::object{
        {“key1”, “value1”},
        {“key2”, “value2”},
        {“key3”, Json::array {1, 2, 3}},
    };
    std::string = json_str = my_json.dump();
    std::cout <<"json_str is : "<< json_str << std::endl;
    std::cout <<"key1 : "<< my_jsonj[“key1”].string_value() << std::endl;
}

# CMake 编译

cmake_minimum_required(VERSION 3.18 FARAL_ERROR)
project(example_json VERSION 1.0.0.0 LANGUAGES C CXX)
include (${CMAKE_CURRENT_LIST_DIR}/external/json11/check.cmake) #external 包含了个人构建若干个三方库的 cmake 文件,组织了下载、编译、安装的全过程。一般来讲,不像我这样设置的话,会在 install 在/usr/local/目录下,只需要 find_package 即可
add_executable(json_test
     ${CMAKE_CURRENT_LIST_DIR}/unittest/json_read.cpp
)
target_link_libraries(json_test PRIVATE
     json11::json11 #此处也是我重命名target,只要 link json11::json
)

转载地址:http://ojxgj.baihongyu.com/

你可能感兴趣的文章
小甲鱼Python第二十一讲(lambda表达式)
查看>>
小甲鱼Python第二十三讲、第二十四讲(递归-这帮小兔崽子、汉诺塔)
查看>>
小甲鱼Python第二十七讲(集合)
查看>>
可调谐半导体激光器的窄线宽测试及压缩
查看>>
matlab中 %d,%f,%c,%s
查看>>
常见的光纤接头汇总
查看>>
半导体激光器—问题整理(二)
查看>>
科研日记7.31
查看>>
zemax仿真二向色镜
查看>>
stm32单片机编程时extern的用法
查看>>
UART4和5的问题
查看>>
Spring框架中在并发访问时的线程安全性
查看>>
网站部署
查看>>
什么情况下会发生栈内存溢出。
查看>>
何为去中心化
查看>>
缓存一致性:写策略
查看>>
Cache一致性:MESI
查看>>
缓存一致性:写未命中
查看>>
为什么用中间位作为组索引
查看>>
缓存:局部性
查看>>