Json数据通用类 更多...
#include <jsonlib.h>
Public 成员函数 | |
JsonValue (std::string_view str, std::string_view::const_iterator &it) | |
反序列化构造函数 | |
JsonValue (const std::initializer_list< JsonValue > &init_list) | |
列表初始化器 | |
JsonType | type () const noexcept |
获取当前对象数据类型 | |
void | reset () noexcept |
重置,设为null值 | |
void | clear () noexcept |
按类型清除 | |
size_t | size () const noexcept |
获取子元素数量 | |
JsonValue ()=default | |
默认构造函数 | |
JsonValue (const JsonType &jsonType) | |
指定类型的构造函数 | |
JsonValue (std::string_view str) noexcept | |
字符串构造函数 | |
JsonValue & | operator= (std::string_view str) |
字符串赋值函数 | |
JsonValue (const char *str) noexcept | |
字符串字面量构造函数 | |
JsonValue & | operator= (const char *str) noexcept |
字符串字面量赋值函数 | |
JsonValue (const bool &bl) noexcept | |
布尔类型构造 | |
JsonValue (const int &num) noexcept | |
整数类型构造 | |
JsonValue (const long long &num) noexcept | |
长整数类型构造 | |
JsonValue (const double &num) noexcept | |
浮点数类型构造 | |
JsonValue (const long double &num) noexcept | |
浮点数类型构造 | |
JsonValue (const std::nullptr_t &) noexcept | |
nullptr_t类型构造 | |
JsonValue (const JsonArray &jsonArray) noexcept | |
JsonArray拷贝构造 | |
JsonValue (JsonArray &&jsonArray) noexcept | |
JsonArray移动构造 | |
JsonValue (const JsonObject &jsonObject) noexcept | |
JsonObject拷贝构造 | |
JsonValue (JsonObject &&jsonObject) noexcept | |
JsonObject移动构造 | |
JsonValue & | operator= (const JsonArray &jsonArray) noexcept |
JsonArray拷贝赋值 | |
JsonValue & | operator= (JsonArray &&jsonArray) noexcept |
JsonArray移动赋值 | |
JsonValue & | operator= (const JsonObject &jsonObject) noexcept |
JsonObject拷贝赋值 | |
JsonValue & | operator= (JsonObject &&jsonObject) noexcept |
JsonObject移动赋值 | |
JsonValue & | operator= (const bool &bl) noexcept |
布尔类型赋值 | |
JsonValue & | operator= (const int &num) noexcept |
整数类型赋值 | |
JsonValue & | operator= (const long long &num) noexcept |
长整数类型赋值 | |
JsonValue & | operator= (const double &num) noexcept |
浮点数类型赋值 | |
JsonValue & | operator= (const long double &num) noexcept |
浮点数类型赋值 | |
JsonValue & | operator= (const std::nullptr_t &) noexcept |
null类型赋值 | |
JsonValue (const JsonValue &jsonValue) noexcept | |
拷贝构造 | |
JsonValue (JsonValue &&jsonValue) noexcept | |
移动构造 | |
JsonValue & | operator= (const JsonValue &jsonValue) noexcept |
拷贝赋值 | |
JsonValue & | operator= (JsonValue &&jsonValue) noexcept |
移动赋值 | |
std::string | serialize () const noexcept |
序列化对象 | |
std::string | serialize_pretty (const size_t &space_num=2, const size_t &depth=0) const noexcept |
序列化对象且美化 | |
bool | is_object () const noexcept |
判断是不是对象 | |
bool | is_array () const noexcept |
判断是不是数组 | |
bool | is_string () const noexcept |
判断是不是字符串 | |
bool | is_bool () const noexcept |
判断是不是布尔 | |
bool | is_number () const noexcept |
判断是不是数值 | |
bool | is_int64 () const noexcept |
判断是不是整数 | |
bool | is_double () const noexcept |
判断是不是浮点 | |
bool | is_null () const noexcept |
判断是不是null | |
bool | is_value () const noexcept |
判断是不是值类型 | |
long long | as_int64 () const |
转换成long long类型,复制一份 | |
double | as_double () const |
转换成double类型,复制一份 | |
long double | as_ldouble () const |
转换成double类型,复制一份 | |
bool | as_bool () const |
转换成bool类型,复制一份 | |
std::string | as_string () const |
转换成string类型,注意是拷贝一份 | |
JsonObject & | as_object () |
获取内部Object对象的引用 | |
const JsonObject & | as_object () const |
获取内部JsonObject对象的const引用 | |
JsonArray & | as_array () |
获取内部Array对象的引用 | |
const JsonArray & | as_array () const |
获取内部JsonArray对象的const引用 | |
JsonValue & | at (const size_t &index) |
at元素访问 | |
JsonValue & | at (const std::string &key) |
at元素访问 | |
JsonValue & | operator[] (const size_t &index) |
[]元素访问 | |
JsonValue & | operator[] (const std::string &key) |
[]元素访问 | |
bool | hasKey (const std::string &key) const noexcept |
检查是否存在某个key | |
void | push_back (const JsonValue &jsonBasic) |
末尾拷贝插入元素,O(1) | |
void | push_back (JsonValue &&jsonBasic) |
末尾移动插入元素,O(1) | |
void | pop_back () |
末尾删除元素,O(1) | |
void | insert (const size_t &index, const JsonValue &jsonBasic) |
在指定位置插入元素 | |
void | insert (const size_t &index, JsonValue &&jsonBasic) |
在指定位置移入元素 | |
void | insert (const std::string &key, const JsonValue &jsonBasic) |
插入键值对 | |
void | insert (const std::string &key, JsonValue &&jsonBasic) |
移动插入键值对 | |
void | erase (const size_t &index) |
删除指定位置的元素 | |
void | erase (const std::string &key) |
删除key的元素 | |
Private 类型 | |
using | JsonVar = std::variant< bool, std::string, JsonObject, JsonArray > |
Private 属性 | |
JsonVar | content_ { false } |
存储JSON数据。 | |
JsonType | type_ { JsonType::ISNULL } |
表示当前对象存储的数据类型, | |
|
private |
Jsonlib::JsonValue::JsonValue | ( | std::string_view | str, |
std::string_view::const_iterator & | it | ||
) |
反序列化构造函数
从str的it位置开始解析,请勿使用此构造,请使用deserialize()函数。
在文件 jsonlib.cpp 第 294 行定义.
Jsonlib::JsonValue::JsonValue | ( | const std::initializer_list< JsonValue > & | init_list | ) |
列表初始化器
init_list | 初始化列表 |
参数数量为0时,被认为是null类型 参数数量为2且第一个参数是字符串类型时,被认为是object 其他时候都会被认为是array
在文件 jsonlib.cpp 第 432 行定义.
|
default |
默认构造函数
默认构造,生成ISNULL类型的JSON数据。
|
explicit |
|
noexcept |
|
noexcept |
字符串字面量构造函数
str | JSON格式的文本数据。 |
直接视为文本数据,反转义后生成对象
在文件 jsonlib.cpp 第 420 行定义.
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
noexcept |
JsonArray拷贝构造
在文件 jsonlib.cpp 第 523 行定义.
|
noexcept |
JsonArray移动构造
在文件 jsonlib.cpp 第 529 行定义.
|
noexcept |
JsonObject拷贝构造
在文件 jsonlib.cpp 第 536 行定义.
|
noexcept |
JsonObject移动构造
在文件 jsonlib.cpp 第 542 行定义.
|
noexcept |
拷贝构造
在文件 jsonlib.cpp 第 492 行定义.
|
noexcept |
移动构造
在文件 jsonlib.cpp 第 498 行定义.
JsonArray & Jsonlib::JsonValue::as_array | ( | ) |
获取内部Array对象的引用
获取内部Array对象的引用,可调用std::vector相关函数,非const,可修改内容
JsonTypeException | 转换失败,类型错误 |
在文件 jsonlib.cpp 第 738 行定义.
const JsonArray & Jsonlib::JsonValue::as_array | ( | ) | const |
获取内部JsonArray对象的const引用
获取内部Array对象的引用,可调用std::vector相关函数,const,不可修改内容
JsonTypeException | 转换失败,类型错误 |
在文件 jsonlib.cpp 第 742 行定义.
bool Jsonlib::JsonValue::as_bool | ( | ) | const |
double Jsonlib::JsonValue::as_double | ( | ) | const |
long long Jsonlib::JsonValue::as_int64 | ( | ) | const |
long double Jsonlib::JsonValue::as_ldouble | ( | ) | const |
JsonObject & Jsonlib::JsonValue::as_object | ( | ) |
获取内部Object对象的引用
获取内部Object对象的引用,可调用std::map相关函数,非const,可修改内容
JsonTypeException | 转换失败,类型错误 |
在文件 jsonlib.cpp 第 730 行定义.
const JsonObject & Jsonlib::JsonValue::as_object | ( | ) | const |
获取内部JsonObject对象的const引用
获取内部Object对象的const引用,可调用std::map相关函数,const,不可修改内容
JsonTypeException | 转换失败,类型错误 |
在文件 jsonlib.cpp 第 734 行定义.
std::string Jsonlib::JsonValue::as_string | ( | ) | const |
转换成string类型,注意是拷贝一份
JsonTypeException | 转换失败,类型错误(只有ARRAY和OBJECT会转换失败)。 |
在文件 jsonlib.cpp 第 714 行定义.
JsonValue & Jsonlib::JsonValue::at | ( | const size_t & | index | ) |
at元素访问
at访问,带越界检查,越界抛出out_of_range,必须是ARRAY类型
JsonTypeException | 类型错误异常 |
std::out_of_range | 越界不存在 |
在文件 jsonlib.cpp 第 747 行定义.
JsonValue & Jsonlib::JsonValue::at | ( | const std::string & | key | ) |
at元素访问
at访问,带越界检查,key不存在时抛出out_of_range,必须是OBJECT类型
JsonTypeException | 类型错误异常 |
std::out_of_range | key不存在 |
在文件 jsonlib.cpp 第 754 行定义.
|
noexcept |
void Jsonlib::JsonValue::erase | ( | const size_t & | index | ) |
删除指定位置的元素
删除指定位置的元素,当前对象必须是ARRAY类型,不能越界
JsonTypeException | 当前对象并非ARRAY类型。 |
out_of_range | 索引越界。 |
在文件 jsonlib.cpp 第 826 行定义.
void Jsonlib::JsonValue::erase | ( | const std::string & | key | ) |
删除key的元素
删除指定key的元素,当前对象必须是OBJECT类型,key可以不存在(不会执行任何操作,不会抛出异常)。
JsonTypeException | 当前对象并非OBJECT类型。 |
在文件 jsonlib.cpp 第 833 行定义.
|
noexcept |
void Jsonlib::JsonValue::insert | ( | const size_t & | index, |
const JsonValue & | jsonBasic | ||
) |
void Jsonlib::JsonValue::insert | ( | const size_t & | index, |
JsonValue && | jsonBasic | ||
) |
void Jsonlib::JsonValue::insert | ( | const std::string & | key, |
const JsonValue & | jsonBasic | ||
) |
void Jsonlib::JsonValue::insert | ( | const std::string & | key, |
JsonValue && | jsonBasic | ||
) |
|
inlinenoexcept |
|
noexcept |
字符串字面量赋值函数
str | JSON格式的文本数据。 |
直接视为文本数据,反转义后生成对象
在文件 jsonlib.cpp 第 425 行定义.
|
inlinenoexcept |
|
inlinenoexcept |
JsonArray拷贝赋值
在文件 jsonlib.cpp 第 550 行定义.
|
noexcept |
JsonObject拷贝赋值
在文件 jsonlib.cpp 第 571 行定义.
拷贝赋值
在文件 jsonlib.cpp 第 505 行定义.
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
JsonArray移动赋值
在文件 jsonlib.cpp 第 560 行定义.
|
noexcept |
JsonObject移动赋值
在文件 jsonlib.cpp 第 581 行定义.
移动赋值
在文件 jsonlib.cpp 第 513 行定义.
JsonValue & Jsonlib::JsonValue::operator= | ( | std::string_view | str | ) |
JsonValue & Jsonlib::JsonValue::operator[] | ( | const size_t & | index | ) |
[]元素访问
[]访问,必须是ARRAY类型,无越界检查。
JsonTypeException | 类型错误异常 |
在文件 jsonlib.cpp 第 761 行定义.
JsonValue & Jsonlib::JsonValue::operator[] | ( | const std::string & | key | ) |
[]元素访问
[]访问,必须是OBJECT类型,无越界检查。
JsonTypeException | 类型错误异常 |
在文件 jsonlib.cpp 第 768 行定义.
void Jsonlib::JsonValue::pop_back | ( | ) |
void Jsonlib::JsonValue::push_back | ( | const JsonValue & | jsonBasic | ) |
void Jsonlib::JsonValue::push_back | ( | JsonValue && | jsonBasic | ) |
|
noexcept |
序列化对象
将对象序列化,生成JSON结构的字符串,去除无效空白字符。
在文件 jsonlib.cpp 第 594 行定义.
|
noexcept |
序列化对象且美化
对象序列化,生成JSON结构的字符串,自动生成换行和空格缩进。
space_num | 每次缩进使用的空格数量 默认 2 |
depth | 当前对象缩进次数,默认 0 |
在文件 jsonlib.cpp 第 641 行定义.
|
noexcept |
|
inlinenoexcept |
|
private |
|
private |