diff options
-rw-r--r-- | wsutil/json_dumper.c | 11 | ||||
-rw-r--r-- | wsutil/json_dumper.h | 1 |
2 files changed, 8 insertions, 4 deletions
diff --git a/wsutil/json_dumper.c b/wsutil/json_dumper.c index 7ae9a0674a..6a0568ce7e 100644 --- a/wsutil/json_dumper.c +++ b/wsutil/json_dumper.c @@ -37,7 +37,7 @@ enum json_dumper_change { }; static void -json_puts_string(FILE *fp, const char *str) +json_puts_string(FILE *fp, const char *str, gboolean dot_to_underscore) { if (!str) { fputs("null", fp); @@ -58,7 +58,10 @@ json_puts_string(FILE *fp, const char *str) if (str[i] == '\\' || str[i] == '"') { fputc('\\', fp); } - fputc(str[i], fp); + if (dot_to_underscore && str[i] == '.') + fputc('_', fp); + else + fputc(str[i], fp); } } fputc('"', fp); @@ -200,7 +203,7 @@ json_dumper_set_member_name(json_dumper *dumper, const char *name) } prepare_token(dumper); - json_puts_string(dumper->output_file, name); + json_puts_string(dumper->output_file, name, dumper->flags & JSON_DUMPER_DOT_TO_UNDERSCORE); fputc(':', dumper->output_file); if ((dumper->flags & JSON_DUMPER_FLAGS_PRETTY_PRINT)) { fputc(' ', dumper->output_file); @@ -256,7 +259,7 @@ json_dumper_value_string(json_dumper *dumper, const char *value) } prepare_token(dumper); - json_puts_string(dumper->output_file, value); + json_puts_string(dumper->output_file, value, FALSE); dumper->state[dumper->current_depth] = JSON_DUMPER_TYPE_VALUE; } diff --git a/wsutil/json_dumper.h b/wsutil/json_dumper.h index 98ce99a3e7..68e1777d46 100644 --- a/wsutil/json_dumper.h +++ b/wsutil/json_dumper.h @@ -49,6 +49,7 @@ extern "C" { typedef struct json_dumper { FILE *output_file; /**< Output file, must be set. */ #define JSON_DUMPER_FLAGS_PRETTY_PRINT (1 << 0) /* Enable pretty printing. */ +#define JSON_DUMPER_DOT_TO_UNDERSCORE (1 << 1) /* Convert dots to underscores in keys */ int flags; /* for internal use, initialize with zeroes. */ int current_depth; |