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 } |
表示当前对象存储的数据类型, | |
Json数据通用类
JSON反序列化后的,可操作对象。
|
private |
Jsonlib::JsonValue::JsonValue | ( | std::string_view | str, |
std::string_view::const_iterator & | it ) |
反序列化构造函数
从str的it位置开始解析,请勿使用此构造,请使用deserialize()函数。
Jsonlib::JsonValue::JsonValue | ( | const std::initializer_list< JsonValue > & | init_list | ) |
列表初始化器
init_list | 初始化列表 |
参数数量为0时,被认为是null类型 参数数量为2且第一个参数是字符串类型时,被认为是object 其他时候都会被认为是array
|
default |
默认构造函数
默认构造,生成ISNULL类型的JSON数据。
|
explicit |
指定类型的构造函数
根据类型进行初始化。
|
noexcept |
字符串构造函数
str | 需要转义的字符串 |
将输入字符串反转义,生成对象。
|
noexcept |
字符串字面量构造函数
str | JSON格式的文本数据。 |
直接视为文本数据,反转义后生成对象
|
inlinenoexcept |
布尔类型构造
|
inlinenoexcept |
整数类型构造
|
inlinenoexcept |
长整数类型构造
|
inlinenoexcept |
浮点数类型构造
|
inlinenoexcept |
浮点数类型构造
|
inlinenoexcept |
nullptr_t类型构造
|
noexcept |
JsonArray拷贝构造
|
noexcept |
JsonArray移动构造
|
noexcept |
JsonObject拷贝构造
|
noexcept |
JsonObject移动构造
|
noexcept |
拷贝构造
|
noexcept |
移动构造
JsonArray & Jsonlib::JsonValue::as_array | ( | ) |
获取内部Array对象的引用
获取内部Array对象的引用,可调用std::vector相关函数,非const,可修改内容
JsonTypeException | 转换失败,类型错误 |
|
nodiscard |
获取内部JsonArray对象的const引用
获取内部Array对象的引用,可调用std::vector相关函数,const,不可修改内容
JsonTypeException | 转换失败,类型错误 |
|
nodiscard |
|
nodiscard |
|
nodiscard |
|
nodiscard |
JsonObject & Jsonlib::JsonValue::as_object | ( | ) |
获取内部Object对象的引用
获取内部Object对象的引用,可调用std::map相关函数,非const,可修改内容
JsonTypeException | 转换失败,类型错误 |
|
nodiscard |
获取内部JsonObject对象的const引用
获取内部Object对象的const引用,可调用std::map相关函数,const,不可修改内容
JsonTypeException | 转换失败,类型错误 |
|
nodiscard |
JsonValue & Jsonlib::JsonValue::at | ( | const size_t & | index | ) |
at元素访问
at访问,带越界检查,越界抛出out_of_range,必须是ARRAY类型
JsonTypeException | 类型错误异常 |
std::out_of_range | 越界不存在 |
JsonValue & Jsonlib::JsonValue::at | ( | const std::string & | key | ) |
at元素访问
at访问,带越界检查,key不存在时抛出out_of_range,必须是OBJECT类型
JsonTypeException | 类型错误异常 |
std::out_of_range | key不存在 |
|
noexcept |
按类型清除
对象变为空字典 数组变空数组 数值变0 布尔变false 字符串变空串
void Jsonlib::JsonValue::erase | ( | const size_t & | index | ) |
删除指定位置的元素
删除指定位置的元素,当前对象必须是ARRAY类型,不能越界
JsonTypeException | 当前对象并非ARRAY类型。 |
out_of_range | 索引越界。 |
void Jsonlib::JsonValue::erase | ( | const std::string & | key | ) |
删除key的元素
删除指定key的元素,当前对象必须是OBJECT类型,key可以不存在(不会执行任何操作,不会抛出异常)。
JsonTypeException | 当前对象并非OBJECT类型。 |
|
nodiscardnoexcept |
检查是否存在某个key
检查是否存在某个key,不会抛出异常,非object类型直接返回false
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 ) |
移动插入键值对
|
inlinenodiscardnoexcept |
判断是不是数组
|
inlinenodiscardnoexcept |
判断是不是布尔
|
inlinenodiscardnoexcept |
判断是不是浮点
|
inlinenodiscardnoexcept |
判断是不是整数
|
inlinenodiscardnoexcept |
判断是不是null
|
inlinenodiscardnoexcept |
判断是不是数值
|
inlinenodiscardnoexcept |
判断是不是对象
|
inlinenodiscardnoexcept |
判断是不是字符串
|
inlinenodiscardnoexcept |
判断是不是值类型
|
inlinenoexcept |
布尔类型赋值
|
noexcept |
字符串字面量赋值函数
str | JSON格式的文本数据。 |
直接视为文本数据,反转义后生成对象
|
inlinenoexcept |
浮点数类型赋值
|
inlinenoexcept |
整数类型赋值
|
noexcept |
JsonObject拷贝赋值
|
inlinenoexcept |
浮点数类型赋值
|
inlinenoexcept |
长整数类型赋值
|
inlinenoexcept |
null类型赋值
|
noexcept |
JsonObject移动赋值
JsonValue & Jsonlib::JsonValue::operator= | ( | std::string_view | str | ) |
字符串赋值函数
str | JSON格式的文本数据 |
直接视为文本数据,反转义后生成对象
JsonValue & Jsonlib::JsonValue::operator[] | ( | const size_t & | index | ) |
JsonValue & Jsonlib::JsonValue::operator[] | ( | const std::string & | key | ) |
void Jsonlib::JsonValue::pop_back | ( | ) |
void Jsonlib::JsonValue::push_back | ( | const JsonValue & | jsonBasic | ) |
void Jsonlib::JsonValue::push_back | ( | JsonValue && | jsonBasic | ) |
|
inlinenoexcept |
重置,设为null值
|
nodiscardnoexcept |
序列化对象
将对象序列化,生成JSON结构的字符串,去除无效空白字符。
|
nodiscardnoexcept |
序列化对象且美化
对象序列化,生成JSON结构的字符串,自动生成换行和空格缩进。
space_num | 每次缩进使用的空格数量 默认 2 |
depth | 当前对象缩进次数,默认 0 |
|
nodiscardnoexcept |
获取子元素数量
对象和列表返回子元素个数,字符串返回长度。
|
inlinenodiscardnoexcept |
获取当前对象数据类型
|
private |
存储JSON数据。
std::variant类型,存储JSON数据,需要C++17。
|
private |
表示当前对象存储的数据类型,