File indexing completed on 2025-03-01 10:26:13
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #ifndef GOOGLE_PROTOBUF_JSON_JSON_H__
0011 #define GOOGLE_PROTOBUF_JSON_JSON_H__
0012
0013 #include <string>
0014
0015 #include "absl/status/status.h"
0016 #include "absl/strings/string_view.h"
0017 #include "google/protobuf/message.h"
0018 #include "google/protobuf/util/type_resolver.h"
0019
0020
0021 #include "google/protobuf/port_def.inc"
0022
0023 namespace google {
0024 namespace protobuf {
0025 namespace json {
0026 struct ParseOptions {
0027
0028 bool ignore_unknown_fields = false;
0029
0030
0031
0032
0033
0034
0035 bool case_insensitive_enum_parsing = false;
0036 };
0037
0038 struct PrintOptions {
0039
0040
0041 bool add_whitespace = false;
0042
0043
0044
0045
0046 bool always_print_fields_with_no_presence = false;
0047
0048
0049 bool always_print_enums_as_ints = false;
0050
0051 bool preserve_proto_field_names = false;
0052
0053
0054 bool unquote_int64_if_possible = false;
0055 };
0056
0057
0058
0059
0060
0061
0062
0063 PROTOBUF_EXPORT absl::Status MessageToJsonString(const Message& message,
0064 std::string* output,
0065 const PrintOptions& options);
0066
0067 inline absl::Status MessageToJsonString(const Message& message,
0068 std::string* output) {
0069 return MessageToJsonString(message, output, PrintOptions());
0070 }
0071
0072
0073
0074
0075
0076
0077
0078 PROTOBUF_EXPORT absl::Status JsonStringToMessage(absl::string_view input,
0079 Message* message,
0080 const ParseOptions& options);
0081
0082 inline absl::Status JsonStringToMessage(absl::string_view input,
0083 Message* message) {
0084 return JsonStringToMessage(input, message, ParseOptions());
0085 }
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096 PROTOBUF_EXPORT absl::Status BinaryToJsonStream(
0097 google::protobuf::util::TypeResolver* resolver, const std::string& type_url,
0098 io::ZeroCopyInputStream* binary_input,
0099 io::ZeroCopyOutputStream* json_output, const PrintOptions& options);
0100
0101 inline absl::Status BinaryToJsonStream(google::protobuf::util::TypeResolver* resolver,
0102 const std::string& type_url,
0103 io::ZeroCopyInputStream* binary_input,
0104 io::ZeroCopyOutputStream* json_output) {
0105 return BinaryToJsonStream(resolver, type_url, binary_input, json_output,
0106 PrintOptions());
0107 }
0108
0109 PROTOBUF_EXPORT absl::Status BinaryToJsonString(
0110 google::protobuf::util::TypeResolver* resolver, const std::string& type_url,
0111 const std::string& binary_input, std::string* json_output,
0112 const PrintOptions& options);
0113
0114 inline absl::Status BinaryToJsonString(google::protobuf::util::TypeResolver* resolver,
0115 const std::string& type_url,
0116 const std::string& binary_input,
0117 std::string* json_output) {
0118 return BinaryToJsonString(resolver, type_url, binary_input, json_output,
0119 PrintOptions());
0120 }
0121
0122
0123
0124
0125
0126
0127
0128
0129
0130 PROTOBUF_EXPORT absl::Status JsonToBinaryStream(
0131 google::protobuf::util::TypeResolver* resolver, const std::string& type_url,
0132 io::ZeroCopyInputStream* json_input,
0133 io::ZeroCopyOutputStream* binary_output, const ParseOptions& options);
0134
0135 inline absl::Status JsonToBinaryStream(
0136 google::protobuf::util::TypeResolver* resolver, const std::string& type_url,
0137 io::ZeroCopyInputStream* json_input,
0138 io::ZeroCopyOutputStream* binary_output) {
0139 return JsonToBinaryStream(resolver, type_url, json_input, binary_output,
0140 ParseOptions());
0141 }
0142
0143 PROTOBUF_EXPORT absl::Status JsonToBinaryString(
0144 google::protobuf::util::TypeResolver* resolver, const std::string& type_url,
0145 absl::string_view json_input, std::string* binary_output,
0146 const ParseOptions& options);
0147
0148 inline absl::Status JsonToBinaryString(google::protobuf::util::TypeResolver* resolver,
0149 const std::string& type_url,
0150 absl::string_view json_input,
0151 std::string* binary_output) {
0152 return JsonToBinaryString(resolver, type_url, json_input, binary_output,
0153 ParseOptions());
0154 }
0155 }
0156 }
0157 }
0158
0159 #include "google/protobuf/port_undef.inc"
0160
0161 #endif