First of all, ArduinoJson is not slow by itself. It’s slow when used in conjunction with the WifiClient from the ESP8266 core.

The problem is that there is no buffer between ArduinoJson and the WifiClient.

To solve this, either:

  1. Enable the Nagle algorithm on WifiClient by calling setNoDelay(false).
  2. Serialize to a buffer and send the whole buffer in one shot.
  3. Insert a BufferedPrint proxy between ArduinoJson and WifiClient.