This file is largely copied from JsonStructSerializerBackend / JsonStructDeserializerBackend. The primary difference is that it exposes template args for which character encoding to use, as well as our printing policy.