JSON C Encode Functions

The JSON C low-level encode functions handle the JSON encoding of simple XML schema data types. Calls to these functions are assembled in the C source code generated by the XBinder compiler to accomplish the encoding of complex structures. These functions are also directly callable from within a user's application program if the need to accomplish a low level encoding function exists.

The procedure to call a low-level encode function is the same as the procedure to call a compiler generated encode function described earlier. It is as follows:

  1. The rtxInitContext function must first be called to initialize a context block structure.

  2. Either a stream must be set up or a memory buffer specified to receive the encoded message. To set up a stream, one of the rtxStream functions must be called. To set up a memory buffer, the rtxInitContextBuffer function is used.

  3. Encode functions are invoked to encode the JSON data types.

If a stream was used, the encoded message will have been written to the output stream. If a memory buffer was used, the result of the encoding will start at the beginning of the buffer. The encoded stream is a standard UTF-8 null-terminated text string.

For example, the following code fragment could be used to encode a document with a single, boolean value.

   Boolean      data;
   OSCTXT       ctxt;
   int          i, stat;
   const char* filename = "message.json";
                
   /* Init context */
                    
   stat = rtxInitContext (&ctxt);
   if (0 != stat) {
      printf ("Context initialization failed.\n");
      rtxErrPrint (&ctxt);
      return stat;
   }
                    
   /* Populate structure of generated type */                
   data = TRUE;
   stat = rtxStreamFileCreateWriter (&ctxt, filename);
                    
   if (0 == stat)
      stat = JsonEnc_personnelRecord (&ctxt, data);
      rtxStreamClose (&ctxt);
      if (0 == stat) {
         printf ("encoded message:\n");
         rtxPrintFile (filename);
         printf ("\n");
      }
      else {
         printf ("Encoding failed\n");
         rtxErrPrint (&ctxt);
      }  
   } 

A complete reference to all of the built-in C JSON encode functions is available in the XBinder C/C++ Runtime Reference Manual.