Skip to content

Instantly share code, notes, and snippets.

@lourencomcviana
Forked from jenslohmann/toString Generator
Last active August 28, 2024 02:44
Show Gist options
  • Save lourencomcviana/4d3bfcc192ca0c48901d699034da7707 to your computer and use it in GitHub Desktop.
Save lourencomcviana/4d3bfcc192ca0c48901d699034da7707 to your computer and use it in GitHub Desktop.
Java toString() generator for IntelliJ IDEA that generates JSON
public java.lang.String toString() {
#if ( $members.size() > 0 )
#set ( $i = 0 )
return "{\"_class\":\"$classname\", " +
#foreach( $member in $members )
#set ( $i = $i + 1 )
#if ( $i == $members.size() )
#set ( $postfix = "+" )
#else
#set ( $postfix = "+ "", "" + " )
#end
#if ( $member.collection )
"\"$member.name\":" + ($member.accessor == null ? "null" : java.util.Arrays.toString($member.accessor .toArray())) $postfix
#elseif ( $member.objectArray )
"\"$member.name\":" + java.util.Arrays.toString($member.accessor) $postfix
#elseif ( $member.primitiveArray )
"\"$member.name\":" + java.util.Arrays.toString($member.accessor) $postfix
#elseif ( $member.object )
#if ($member.typeQualifiedName.contains("java.lang"))
"\"$member.name\":" + ($member.accessor == null ? "null" : "\"" + $member.accessor + "\"" ) $postfix
#elseif ($member.typeQualifiedName.equals("java.time.LocalDateTime") )
"\"$member.name\":" + ($member.accessor == null ? "null" : $member.accessor .format(DateTimeFormatter.ISO_DATE_TIME)) $postfix
#elseif ($member.typeQualifiedName.equals("java.time.LocalDate") )
"\"$member.name\":" + ($member.accessor == null ? "null" : $member.accessor .format(DateTimeFormatter.ISO_LOCAL_DATE)) $postfix
#else
"\"$member.name\":" + ($member.accessor == null ? "null" : $member.accessor .toString().replaceAll("\"","'") ) $postfix
#end
#else
"\"$member.name\":\"" + $member.accessor + "\"" $postfix
#end
#end
"}";
#else
return "{\"_class\":\"$classname\"}";
#end
}
@lourencomcviana
Copy link
Author

added conversion to localdate, localdatetime and mitigated errors converting from strings with double quotes

@azhenge
Copy link

azhenge commented Aug 12, 2024

public java.lang.String toString() {
#if ( $members.size() > 0 )
    #set ( $i = 0 )
return "{" +
    #foreach( $member in $members )
        #set ( $i = $i + 1 )
        #if ( $i == $members.size() )
            #set ( $postfix = "+" )
        #else
            #set ( $postfix = "+ "", "" + " )
        #end
        #if ( $member.collection )
        "\"$member.name\":" + ($member.accessor == null ? "null" : java.util.Arrays.toString($member.accessor .toArray())) $postfix
        #elseif ( $member.objectArray )
        "\"$member.name\":" + java.util.Arrays.toString($member.accessor) $postfix
        #elseif ( $member.primitiveArray )
        "\"$member.name\":" + java.util.Arrays.toString($member.accessor) $postfix
        #elseif ( $member.object )
            #if ($member.boolean || $member.numeric || $member.map)
            "\"$member.name\":" + ($member.accessor == null ? "null" : $member.accessor ) $postfix
            #elseif ($member.typeQualifiedName.contains("java.lang") || $member.enum || $member.date)
            "\"$member.name\":" + ($member.accessor == null ? "null" : "\"" + $member.accessor + "\"" ) $postfix
            #elseif ($member.typeQualifiedName.equals("java.time.LocalDateTime") )
            "\"$member.name\":" + ($member.accessor == null ? "null" : "\"" + $member.accessor .format(DateTimeFormatter.ISO_DATE_TIME) + "\"") $postfix
            #elseif ($member.typeQualifiedName.equals("java.time.LocalDate") )
            "\"$member.name\":" + ($member.accessor == null ? "null" : "\"" + $member.accessor .format(DateTimeFormatter.ISO_LOCAL_DATE) + "\"") $postfix
            #else
            "\"$member.name\":" + ($member.accessor == null ? "null" : $member.accessor) $postfix
            #end
        #else
        "\"$member.name\":\"" + $member.accessor + "\"" $postfix
        #end
    #end
"}";
#else
return "}";
#end
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment