Skip to content

Pure C implementation of Protobuf to/from JSON converter

License

Notifications You must be signed in to change notification settings

Sannis/protobuf2json-c

Folders and files

NameName
Last commit message
Last commit date

Latest commit

28dd678 · Dec 1, 2016
Feb 7, 2016
Feb 7, 2016
Dec 1, 2016
Dec 1, 2016
Sep 8, 2014
Feb 7, 2016
Dec 1, 2015
Nov 28, 2016
Feb 7, 2016
Feb 7, 2016
Nov 28, 2016
Feb 7, 2016
Nov 28, 2016

Repository files navigation

protobuf2json-c BS CS

This is protobuf2json-c, pure C implementation of the Google Protocol Buffers to/from JSON converter.

Building

protobuf2json-c requires a C compiler, protobuf-c 1.1.0 and jansson 2.7 to be installed. If building from a git checkout, the autotools (autoconf, automake, libtool) must also be installed, and the build system must be generated by running the autogen.sh script:

./autogen.sh && ./configure && make && make install

API

protobuf2json-c piblic API containt 6 functions: 3 for Protobuf to JSON conversion and 3 for JSON to Protobuf conversion. They uses json_t object, char * C-string or file for JSON.

Protobuf to JSON conversion functions:

int protobuf2json_object(
  ProtobufCMessage *protobuf_message,
  json_t **json_object,
  char *error_string,
  size_t error_size
);
int protobuf2json_string(
  ProtobufCMessage *protobuf_message,
  size_t json_flags,
  char **json_string,
  char *error_string,
  size_t error_size
);
int protobuf2json_file(
  ProtobufCMessage *protobuf_message,
  size_t json_flags,
  char *json_file,
  char *fopen_mode,
  char *error_string,
  size_t error_size
);

JSON to Protobuf conversion functions:

int json2protobuf_object(
  json_t *json_object,
  const ProtobufCMessageDescriptor *protobuf_message_descriptor,
  ProtobufCMessage **protobuf_message,
  char *error_string,
  size_t error_size
);
int json2protobuf_string(
  char *json_string,
  size_t json_flags,
  const ProtobufCMessageDescriptor *protobuf_message_descriptor,
  ProtobufCMessage **protobuf_message,
  char *error_string,
  size_t error_size
);
int json2protobuf_file(
  char *json_file,
  size_t json_flags,
  const ProtobufCMessageDescriptor *protobuf_message_descriptor,
  ProtobufCMessage **protobuf_message,
  char *error_string,
  size_t error_size
);

Each of them have error_string and error_size arguments used to pass error description from protobuf2json-c functions. You can pass NULL and 0 to avoid setting error description.

Credits

protobuf2json-c based on code from:

License

MIT license. See license text in file LICENSE.