Need help with serialize?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

yksten
153 Stars 13 Forks 167 Commits 2 Opened issues

Services available

!
?

Need anything else?

Contributors list

No Data

struct2x简介

C++98序列化库,一个开源的C++结构体与JSON快速超高效互转库。它可以快速实现结构体对象与JSON对象之间序列化及反序列化要求。快速、简洁的 API 设计,大大降低直接使用JSON解析库来实现此类功能的代码复杂度。也没有外部依赖。

注: 该库旨在C++结构体和json互转。

支持结构体类型: * 支持

bool
uint32_t
int32_t
uint64_t
int64_t
float
double
enum
std::string
std::vector
std::map
等。(不支持
std::list
) *
std::map
的key只能是基础类型,且不能是
float
double
。 * 不支持指针和固定数组。(以后也不考虑支持指针和数组) * 数组内需要统一类型,不支持
[1,2,{"key":"value"}]
。 * 解析时支持has功能。

如何使用

#include 
#include       // SERIALIZE
#include   // encode(struct -> json)
#include   // decode(json -> struct)

struct structTest { int32_t id; std::string str; std::vector<:string> v; std::map<:string int> m; // 使用该模板函数,指定struct中需要转为json的变量,必须为public template void serialize(T& t) { SERIALIZE(t, id, str, v, m); // 也可以使用第二种方式 // t.convert("id", id).convert("str", str).convert("v", v).convert("m", m); } };

int main(int argc, char* argv[]) { std::string strJson; structTest ins; // ··· ins赋值操作 bool bEncode = serialize::JSONEncoder(strJson) << ins;

structTest insDecode;
bool bDecode = serialize::JSONDecoder(strJson.c_str(), strJson.size()) &gt;&gt; insDecode;

return 0;

} </:string></:string>

编译

$ git clone https://github.com/yksten/struct2x.git
$ cd struct2x
$ mkdir -p cmake/build
$ pushd cmake/build
$ cmake -DEXAMPLE=ON ../..
$ make -j
$ popd

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.