On Tue, 02 May 2023 14:13:27 +0200, Claudio Jeker wrote:
> Add a json_do_string() a function to print a JSON string.
> This function does the needed encoding of control chars and escape chars.
> I skipped the optional encoding of the forward slash (/) since this is
> only needed if the json output is embedded in HTML/SGML/XML.
> People putting JSON into such documents need to pass this through an extra
> step.
Unless you can guarantee that other control characters cannot occur
you probably want to output them in unicode hex form. For example,
something like:
default:
const char hex[] = "0123456789abcdef";
if (iscntrl(c)) {
/* Escape control characters like \u0000 */
if (!eb)
eb = fprintf(jsonfh, "\\u00%c%c", hex[c >> 4],
hex[c & 0x0f]) < 0;
}
In this case you probably want to assign c as an unsigned char.
E.g.
while ((c = (unsigned char)*v++) != '\0') {
...
}
Or better yet just declare c as unsigned char instead of int.
- todd