json11入门教程

11 篇文章 0 订阅
4 篇文章 1 订阅

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
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 地址:https://github.com/dropbox/json11,使用异常简单,只需 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
)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值