PrettyJsonWriter.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #pragma once
  2. #include "JsonWriter.h"
  3. #include "IndentedPrint.h"
  4. using namespace ArduinoJson::Generator;
  5. class PrettyJsonWriter : public JsonWriter
  6. {
  7. public:
  8. explicit PrettyJsonWriter(IndentedPrint& sink)
  9. : JsonWriter(sink), _indenter(sink)
  10. {
  11. }
  12. virtual void beginArray()
  13. {
  14. _length += _sink.write('[');
  15. indent();
  16. }
  17. virtual void endArray()
  18. {
  19. unindent();
  20. _length += _sink.write(']');
  21. }
  22. virtual void writeColon()
  23. {
  24. _length += _sink.print(": ");
  25. }
  26. virtual void writeComma()
  27. {
  28. _length += _sink.write(',');
  29. _length += _indenter.println();
  30. }
  31. virtual void beginObject()
  32. {
  33. _length += _sink.write('{');
  34. indent();
  35. }
  36. virtual void endObject()
  37. {
  38. unindent();
  39. _length += _sink.write('}');
  40. }
  41. private:
  42. IndentedPrint& _indenter;
  43. void indent()
  44. {
  45. _indenter.indent();
  46. _length += _indenter.println();
  47. }
  48. void unindent()
  49. {
  50. _length += _indenter.println();
  51. _indenter.unindent();
  52. }
  53. };