diff --git a/src/tools/vppapigen/vppapigen_c.py b/src/tools/vppapigen/vppapigen_c.py
index c2e1e7d..2cd3c79 100755
--- a/src/tools/vppapigen/vppapigen_c.py
+++ b/src/tools/vppapigen/vppapigen_c.py
@@ -171,14 +171,10 @@
             write("    {\n")
             # What is length field doing here?
             write(
-                '    u8 *s = format(0, "0x%U", format_hex_bytes, '
+                '    char *s = format_c_string(0, "0x%U", format_hex_bytes_no_wrap, '
                 "&a->{n}, {lfield});\n".format(n=o.fieldname, lfield=lfield)
             )
-            write(
-                '    cJSON_AddStringToObject(o, "{n}", (char *)s);\n'.format(
-                    n=o.fieldname
-                )
-            )
+            write('    cJSON_AddStringToObject(o, "{n}", s);\n'.format(n=o.fieldname))
             write("    vec_free(s);\n")
             write("    }\n")
             return
@@ -275,8 +271,12 @@
             "(vl_api_{name}_t *a) {{\n".format(name=o.name)
         )
 
-        write('    u8 *s = format(0, "%U", format_vl_api_{}_t, a);\n'.format(o.name))
-        write("    cJSON *o = cJSON_CreateString((char *)s);\n")
+        write(
+            '    char *s = format_c_string(0, "%U", format_vl_api_{}_t, a);\n'.format(
+                o.name
+            )
+        )
+        write("    cJSON *o = cJSON_CreateString(s);\n")
         write("    vec_free(s);\n")
         write("    return o;\n")
         write("}\n")
diff --git a/src/vppinfra/format.c b/src/vppinfra/format.c
index cf17b8a..642d3e2 100644
--- a/src/vppinfra/format.c
+++ b/src/vppinfra/format.c
@@ -833,6 +833,16 @@
   return s;
 }
 
+__clib_export char *
+format_c_string (u8 *s, const char *fmt, ...)
+{
+  va_list args;
+  va_start (args, fmt);
+  s = va_format (s, fmt, &args);
+  va_end (args);
+  vec_add1 (s, '\0');
+  return (char *) s;
+}
 
 /*
  * fd.io coding-style-patch-verification: ON
diff --git a/src/vppinfra/format.h b/src/vppinfra/format.h
index a1a70a2..14bac86 100644
--- a/src/vppinfra/format.h
+++ b/src/vppinfra/format.h
@@ -372,6 +372,8 @@
 created circular dependency problems. */
 int test_vec_main (unformat_input_t * input);
 
+char *format_c_string (u8 *s, const char *fmt, ...);
+
 #endif /* included_format_h */
 
 /*
diff --git a/src/vppinfra/jsonformat.c b/src/vppinfra/jsonformat.c
index 1aa3864..73cb947 100644
--- a/src/vppinfra/jsonformat.c
+++ b/src/vppinfra/jsonformat.c
@@ -500,12 +500,13 @@
                  mac->bytes[0], mac->bytes[1], mac->bytes[2],
                  mac->bytes[3], mac->bytes[4], mac->bytes[5]);
 }
-#define _(T)                                                \
-  cJSON *vl_api_ ##T## _t_tojson (vl_api_ ##T## _t *a) {   \
-  u8 *s = format(0, "%U", format_vl_api_ ##T## _t, a);      \
-  cJSON *o = cJSON_CreateString((char *)s);                 \
-  vec_free(s);                                              \
-  return o;                                                 \
+#define _(T)                                                                  \
+  cJSON *vl_api_##T##_t_tojson (vl_api_##T##_t *a)                            \
+  {                                                                           \
+    char *s = format_c_string (0, "%U", format_vl_api_##T##_t, a, 0);         \
+    cJSON *o = cJSON_CreateString (s);                                        \
+    vec_free (s);                                                             \
+    return o;                                                                 \
   }
 foreach_type_tojson
 #undef _
