本文共 2099 字,大约阅读时间需要 6 分钟。
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
1.jsonJSON(JavaScript Object Notation) 是一种轻量级的文本数据交换格式,易于让人阅读。同时也易于机器解析和生成。尽管 JSON 是 Javascript 的一个子集,但 JSON 是独立于语言的文本格式,并且采用了类似于 C 语言家族的一些习惯。JSON 解析器和 JSON 库支持许多不同的编程语言。几乎所有与网页开发相关的语言都有 JSON 库。JSON 比 XML 更小、更快。
🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀
2.json datatype
JSON用于描述数据结构,有以下形式存在:
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/