Serializes the JsonVariant to create a prettified JSON document.

If you want a “minified” JSON document, use JsonVariant::printTo()


size_t prettyPrintTo(char* buffer, size_t size) const;
size_t prettyPrintTo(char buffer[size]) const;
size_t prettyPrintTo(Print &) const;
size_t prettyPrintTo(String &) const;
size_t prettyPrintTo(std::string &) const;


The destination where the JSON document should be written. It can be either:

This function treats String and std::string as streams: it doesn’t replace the content, it appends to the end.

Return value

The number of bytes written.

How to view the JSON output?

When you pass a Stream to JsonVariant::prettyPrintTo(), it writes the JSON document to the stream but doesn’t print anything to the serial port, which makes troubleshooting difficult.

If you want to see what JsonVariant::prettyPrintTo() writes, use WriteLoggingStream from the StreamUtils library.


When you pass a Stream to JsonVariant::prettyPrintTo(), it sends the bytes one by one, which can be slow depending on the target stream. For example, if you send to a WiFiClient on an ESP8266, it will send a packet over the air for each byte, which is terribly slow and inefficient. To improve speed and efficiency, we must send fewer, larger packets.

To write the JSON document in chunks, you can use WriteBufferingStream from the StreamUtils library.


StaticJsonBuffer<200> jsonBuffer;
JsonObject& object = jsonBuffer.createObject();
object["hello"] = "world";

JsonVariant variant = object;

will write the following string to the serial output:

  "hello": "world"

See also