@Java91:
Kilka słów wprowadzenie:
toString()
realizuje wizję, że to szybki podgląd dla debugowania itd *)
... nie ma zastąpić ładnego formatowania z zawartością dopasowaną do jakiegoś konkretnego miejsca w programie.
Np programisci w toString ujawniają pola kluczowe dla identyfikacji obiektu (że to ten a nie tamten), ale niekoniecznie wystrzeliwują się z całej wiedzy o obiekcie.
I raczej formatują w jednej linii, niż łamią linie, a maja to dobrze przemyślane
w jaki sposób przekonwertować ... na czytelniejszego Stringa?
Więc tak gdzie ci trzeba, użyj formatowania. jest na to kilka głównych podejść, tu jedno z nich:
https://dzone.com/articles/java-string-format-examples
Wyciskamie potów z toString()
nigdy nie będzie ta skuteczne
aha, i nie konwertujemy JSON, a konwertujemy obiekt, jeśli już
*)
w nielicznych miejscach ta konwencja pęka, tzn toString() ma alternatywne wywołanie z podaniem formatowania (typu datowe, BigDecimal itd)
I jeszcze: nie jest intencją toStringa dać taki zestaw informacji, który pozwoli odbudować identyczny obiekt (to by się nazywało serializacja / deserializacja). Podkreślam to, bo rozważasz JSON więc nie bardzo wiadomo co kombinujesz i na co ci to.