Files
libpostal/src/json_encode.c

41 lines
1.2 KiB
C

#include "json_encode.h"
char *json_encode_string(char *str) {
char *ptr = str;
char_array *json_encoded = char_array_new_size(strlen(str) + 2);
char_array_push(json_encoded, '"');
while (*ptr) {
char ch = *ptr;
switch (ch) {
case '\\':
char_array_append(json_encoded, "\\\\");
break;
case '"':
char_array_append(json_encoded, "\\\"");
break;
case '\n':
char_array_append(json_encoded, "\\n");
break;
case '\r':
char_array_append(json_encoded, "\\r");
break;
case '\t':
char_array_append(json_encoded, "\\t");
break;
case '\b':
char_array_append(json_encoded, "\\\b");
break;
case '\f':
char_array_append(json_encoded, "\\\f");
break;
default:
char_array_push(json_encoded, ch);
}
ptr++;
}
char_array_push(json_encoded, '"');
char_array_terminate(json_encoded);
return char_array_to_string(json_encoded);
}