项目简介
pjcore是一个经过良好测试的C++库,专为处理JSON、Protocol Buffers(protobuf)和HTTP协议而设计。它提供了强大的API,让C++程序处理JSON数据和HTTP请求/响应变得简单高效,并且支持跨平台,适用于多种操作系统和环境。
项目的主要特性和功能
- JSON解析与生成:支持JSON解析和生成,可处理可选的尾部逗号、注释、大整数、NaN、Infinity等,还提供如pretty - print的灵活JSON打印选项。
- Protobuf与JSON映射:能自然地将protobuf消息类型映射到JSON对象,方便两者间的转换,支持protobuf消息的序列化和反序列化。
- HTTP客户端和服务器:提供HTTP客户端和服务器实现,可轻松处理HTTP请求和响应,使用libuv事件循环机制,支持异步I/O操作。
- 跨平台兼容性:在多种操作系统和平台上有良好的兼容性。
安装使用步骤
依赖项
- Protocol Buffers
- libuv
- http - parser
构建步骤
- 复制项目并初始化子模块:
bash cd pjcore git submodule init git submodule update
- 使用提供的构建脚本进行编译:
- 在Linux或Mac上运行:
bash ./build.sh
- 在Windows上运行:
bash build.bat
- 使用生成的库文件和头文件在你的项目中使用pjcore。
使用案例
序列化protobuf消息到JSON
```cpp
include "pjcore/json.h"
include "pjcore/protobuf.h"
int main() { pjcore::Bookstore bookstore; bookstore.set_name("The Shop Around The Corner"); bookstore.set_url("http://bookstore.com");
std::cout << pjcore::WriteJson(bookstore) << std::endl;
return 0;
} ```
解析JSON到protobuf消息
```cpp
include "pjcore/json.h"
include "pjcore/protobuf.h"
int main() { std::string json = "{\"name\":\"Lorem Ipsum\",\"content\":\"Dolor sit amet.\"}"; pjcore::Error error; pjcore::JsonValue json_value;
if (!pjcore::ReadJson(json, &json_value, &error)) {
// 处理解析错误
} else {
pjcore::Article article;
if (!pjcore::UnboxJsonValue(json_value, &article, &error)) {
// 处理反序列化错误
} else {
std::cout << article.DebugString() << std::endl;
}
}
return 0;
} ```
运行一个简单的HTTP服务器
```cpp
include "pjcore/http_server.h"
class HelloWorldHttpHandler : public pjcore::AbstractHttpHandler { public: HelloWorldHttpHandler() : AbstractHttpHandler("HelloWorldHttpHandler", NULL) {}
void AsyncHandle(scoped_ptr
protected:
scoped_ptr
int main() { pjcore::HttpServerConfig config; config.set_port(8080);
pjcore::SharedHttpHandler handler(new HelloWorldHttpHandler());
pjcore::Error error;
pjcore::SharedHttpServer server = pjcore::HttpServer::Create(config, handler, &error);
if (!server) {
// 处理错误
} else if (!server->InitAsync(pjcore::Bind(&OnServerDestroy), &error)) {
// 处理错误
server = NULL;
} else {
for (;;) {
uv_run(uv_default_loop(), UV_RUN_DEFAULT);
}
}
return 0;
} ```
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】