#pragma once #include "JsonWriter.h" #include "IndentedPrint.h" using namespace ArduinoJson::Generator; class PrettyJsonWriter : public JsonWriter { public: explicit PrettyJsonWriter(IndentedPrint& sink) : JsonWriter(sink), _indenter(sink) { } virtual void beginArray() { _length += _sink.write('['); indent(); } virtual void endArray() { unindent(); _length += _sink.write(']'); } virtual void writeColon() { _length += _sink.print(": "); } virtual void writeComma() { _length += _sink.write(','); _length += _indenter.println(); } virtual void beginObject() { _length += _sink.write('{'); indent(); } virtual void endObject() { unindent(); _length += _sink.write('}'); } private: IndentedPrint& _indenter; void indent() { _indenter.indent(); _length += _indenter.println(); } void unindent() { _length += _indenter.println(); _indenter.unindent(); } };