Der Unterschied sind die intern verwendeten Methoden. Während ToString und Format auf ToChars zurückgreifen, macht ToJSON Gebrauch von ToBytes. Bei einem TJSONString ist ToBytes aber so implementiert, daß es alle Zeichen > #128 (und auch ein paar < #32) als /u escaped darstellt. Das ToChars beschränkt sich da lediglich auf ein paar spezielle Zeichen.
Jepp so seh ich das auch. Nur unglücklicherweise mag der Server keine unmaskierten Umlaute und (warum auch immer) kein unformatiertes Json. Heißt, ich muss meinen Request dem nicht standardkonformen Server bekömmlich vorverdauen. Also mit Zeilenumbrüchen, Indentations und \u-escaped Umlaute.