Загрузить JSON с сервера в Protobufs?

Я занимаюсь разработкой клиента C ++, и они использовали protobufs для преобразования JSON (отправка этого клиента) в Protobuf и отправки ответа обратно в формате JSON.

Дело в том, что мне нужен мощный анализатор json, и я считаю, что буферы протокола Google являются лучшими. До сих пор я использовал Boost Json Parser (P-Tree) и пробовал Rapid Json, но они не такие гибкие.

Вариант использования: —

  1. Json, отправляемый сервером, нуждается в модификации и во многих случаях.
  2. Клиент создаст JSON внутри, используя оболочку protobuf, и отправит его на сервер.

Я загружаю Json следующим образом, от пользователя

try
{
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, чтобы преодолеть это?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]