我正在开发一个C ++客户端,他们使用protobufs将JSON(客户端发送)转换为Protobuf并再次以JSON格式发送响应。
问题是我需要一个强大的json解析器,我觉得Google协议缓冲区是最好的。直到现在我已经使用了Boost Json Parser(P-Tree)并试用了Rapid Json,但它们并没有那么灵活。
使用案例: -
我按照以下方式从用户
加载Jsontry
{
std::ifstream fileHandle(sJsonFile.c_str());
if (!fileHandle.is_open())
{
ErrorHandler::getErrorInstance().setError(ERR_JSON_FILE_OPEN, sJsonFile);
return EXIT_FAILURE;
}
boost::property_tree::read_json(fileHandle, root);
fileHandle.close();
}
catch (boost::property_tree::json_parser::json_parser_error& err)
{
ErrorHandler::getErrorInstance().setError(ERR_ILLFORMED_JSON, err.what());
return EXIT_FAILURE;
}
或者像这样的响应JSON
try
{
std::stringstream ss;
ss << sJsonResponse;
boost::property_tree::read_json(ss, root);
}
catch (boost::property_tree::json_parser::json_parser_error& err)
{
ErrorHandler::getErrorInstance().setError(ERR_ILLFORMED_JSON, err.what());
return EXIT_FAILURE;
}
问题在于JSON修改,因为服务器发送的jsons可能或可能不是相同的通用格式,因此特定密钥的修改很难解析和修改。
我如何使用protobufs来解决这个问题?