proto2json.cpp 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include "proto2json.h"
  2. #include "json_output_create.h"
  3. #include "proto2json_printer.h"
  4. #include <library/cpp/json/json_reader.h>
  5. #include <library/cpp/json/json_value.h>
  6. #include <library/cpp/json/json_writer.h>
  7. #include <util/generic/ptr.h>
  8. #include <util/generic/strbuf.h>
  9. #include <util/stream/output.h>
  10. #include <util/stream/str.h>
  11. #include <util/system/yassert.h>
  12. namespace NProtobufJson {
  13. void Proto2Json(const NProtoBuf::Message& proto, IJsonOutput& jsonOutput,
  14. const TProto2JsonConfig& config, bool closeMap) {
  15. TProto2JsonPrinter printer(config);
  16. printer.Print(proto, jsonOutput, closeMap);
  17. }
  18. void Proto2Json(const NProtoBuf::Message& proto, NJson::TJsonValue& json,
  19. const TProto2JsonConfig& config) {
  20. Proto2Json(proto, *CreateJsonMapOutput(json), config);
  21. }
  22. void Proto2Json(const NProtoBuf::Message& proto, NJson::TJsonWriter& writer,
  23. const TProto2JsonConfig& config) {
  24. Proto2Json(proto, *CreateJsonMapOutput(writer), config);
  25. writer.Flush();
  26. }
  27. void Proto2Json(const NProtoBuf::Message& proto, IOutputStream& out,
  28. const TProto2JsonConfig& config) {
  29. Proto2Json(proto, *CreateJsonMapOutput(out, config), config);
  30. }
  31. void Proto2Json(const NProtoBuf::Message& proto, TStringStream& out,
  32. const TProto2JsonConfig& config) {
  33. Proto2Json(proto, *CreateJsonMapOutput(out, config), config);
  34. }
  35. void Proto2Json(const NProtoBuf::Message& proto, TString& str,
  36. const TProto2JsonConfig& config) {
  37. Proto2Json(proto, *CreateJsonMapOutput(str, config), config);
  38. }
  39. TString Proto2Json(const ::NProtoBuf::Message& proto,
  40. const TProto2JsonConfig& config) {
  41. TString res;
  42. Proto2Json(proto, res, config);
  43. return res;
  44. }
  45. }