Ummm... Penso che sia il corretto modo in realtà. \u00df è una rappresentazione Unicode corretta di ß . Quando json_decode() indietro, diventerà ß di nuovo.
Dove ti crea problemi? L'estremità ricevente non lo sta decodificando correttamente? Dovrebbe se usi json_* standard funzioni.
Tutti gli esempi nel manuale mostra la stessa cosa:i caratteri oltre l'intervallo ASCII vengono trasformati in sequenze numeriche.