-
Notifications
You must be signed in to change notification settings - Fork 1
Home
fox136 edited this page Nov 22, 2020
·
1 revision
Welcome to the MvJson wiki!
- 背景:在项目中用到RapidJSON库,很难用,文档少,源码复杂很难看。所以想着自己能否写一个库代替它。
- 简介:之所以叫MvJson是因为我用C++标准库中的map和vector来管理我们json对象(两个容器的首字母连起来就是Mv),还有一个原因就是Mv自带一点音乐的感觉。我们提供的功能包括:字符串转换成json对象,对象转换成字符串,对象的增删改查等功能,满足你对json的所有操作。
代码规模:600+行
系统平台:不限制
编译器版本:不限制
源代码编码:utf-8
json字符串编码:utf-8
API介绍:
CMvJson(const std::string& strSrc); // 利用字符串构造对象,若该字符串满足json语法,则构建成功,否则失败。
CMvJson& operator[](const std::string& strMapKey); // 操作符重载
CMvJson& operator[](size_t nVecIndex); // 操作符重载,若下标非法,则返回一个无效对象。
CMvJson& operator=(const std::string& strValue); // 操作符重载
CMvJson& operator=(double dValue); // 操作符重载
CMvJson& operator=(const CMvJson& dValue); // 操作符重载
int erase(const std::string& strKey); // 删除map对象的一个元素
int push_back(const CMvJson& oMvJson); // 向数组添加一个元素
int pop_back(void); // 删除数组对象最后一个元素
std::string GetString(void); // 获取字符串类型对象的字符串
std::string GetStringPro(void); // 获取任意类型对象字符串
int GetType(void); // 获取对象类型
int size(void); // 获取元素个数
std::map<std::string, CMvJson>::iterator begin_map(void); // 获取开始位置
std::map<std::string, CMvJson>::iterator end_map(void); // 获取结束位置
std::vector<CMvJson>::iterator begin_vector(void); // 获取开始位置
std::vector<CMvJson>::iterator end_vector(void); // 获取结束位置
json文法描述:
S->hAi
S->jNk
A->agVfA
A->ε
N->SfN
N->ε
V->a
V->b
V->c
V->d
V->e
V->S
ε->空集
a->字符串
b->数字
c->null
d->true
e->false
f->,
g->:
h->{
i->}
j->[
k->]
注意:A和N最后面不可以是f
使用方法:
将mv_json.h和mv_json.cpp复制到你的项目即可。
测试代码使用示例:
linux平台:将mv_json.h,mv_json.cpp,main.cpp和test.json复制到一个空目录,然后运行命令: g++ mv_json.cpp main.cpp && ./a.out
window平台: 下载vs2019,新建一个空的控制台程序,将mv_json.h,mv_json.cpp,main.cpp和test.json复制到新建的项目,点击运行就即可