在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:badaix/jsonrpcpp开源软件地址:https://github.com/badaix/jsonrpcpp开源编程语言:C++ 99.9%开源软件介绍:jsonrpc++Leightweight C++ JSON-RPC 2.0 library What it isjsonrpc++ parses and constructs JSON-RPC 2.0 objects, like Example: Parsing a requestjsonrpcpp::entity_ptr entity = jsonrpcpp::Parser::do_parse(R"({"jsonrpc": "2.0", "method": "subtract", "params": {"subtrahend": 23, "minuend": 42}, "id": 3})");
if (entity->is_request())
{
jsonrpcpp::request_ptr request = dynamic_pointer_cast<jsonrpcpp::Request>(entity);
if (request->method() == "subtract")
{
int result = request->params().get<int>("minuend") - request->params().get<int>("subtrahend");
jsonrpcpp::Response response(*request, result);
cout << " Response: " << response.to_json().dump() << "\n";
//will print: {"jsonrpc": "2.0", "result": 19, "id": 3}
}
else
throw jsonrpcpp::MethodNotFoundException(*request);
} What it not isjsonrpc++ is completely transport agnostic, i.e. it doesn't care about transportation of the messages and there is no TCP client or server component shipped with this library. As JSON backbone JSON for Modern C++ is used. Some code examplejsonrpcpp::entity_ptr entity =
jsonrpcpp::Parser::do_parse(R"({"jsonrpc": "2.0", "method": "subtract", "params": {"subtrahend": 23, "minuend": 42}, "id": 3})");
if (entity && entity->is_request())
{
jsonrpcpp::request_ptr request = dynamic_pointer_cast<jsonrpcpp::Request>(entity);
cout << " Request: " << request->method() << ", id: " << request->id() << ", has params: " << !request->params().is_null() << "\n";
if (request->method() == "subtract")
{
int result;
if (request->params().is_array())
result = request->params().get<int>(0) - request->params().get<int>(1);
else
result = request->params().get<int>("minuend") - request->params().get<int>("subtrahend");
jsonrpcpp::Response response(*request, result);
cout << " Response: " << response.to_json().dump() << "\n";
}
else if (request->method() == "sum")
{
int result = 0;
for (const auto& summand : request->params().param_array)
result += summand.get<int>();
jsonrpcpp::Response response(*request, result);
cout << " Response: " << response.to_json().dump() << "\n";
}
else
{
throw jsonrpcpp::MethodNotFoundException(*request);
}
} |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论