-
-
Save jenslohmann/6a01ef23f80687549d0f to your computer and use it in GitHub Desktop.
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 | |
#else | |
"\"$member.name\":" + ($member.accessor == null ? "null" : $member.accessor ) $postfix | |
#end | |
#else | |
"\"$member.name\":\"" + $member.accessor + "\"" $postfix | |
#end | |
#end | |
"}"; | |
#else | |
return "{\"_class\":\"$classname\"}"; | |
#end | |
} |
I think Map type Object is not supposed to be surrounded with ""
Shouldn't treat Date objects as string? I add " || $member.date" to if check in line#19
Is there a way to pretty print this?
Hi, There may be a bug for list member , for example, said I have an obj contain a List<String> list
, above code will generate "name": [mem1, ,mem2, ...]
which actually no a json string.
One little detail, if the string has double quotes inside this generator will give an error.
Example: my chocolate was "delicious" but it was not
this will be cast to "my chocolate was "delicious" but it was not" and is not a valid string
i solved this using a very lazy method
.....
#elseif ( $member.object )
#if ($member.typeQualifiedName.contains("java.lang"))
"\"$member.name\":" + ($member.accessor == null ? "null" : "\"" + $member.accessor + "\"" ) $postfix
#else
"\"$member.name\":" + ($member.accessor == null ? "null" : $member.accessor .toString().replaceAll("\"","'") ) $postfix
#end
#else
....
Line 13 has an invalid space that breaks the script:
... java.util.Arrays.toString($member.accessor .toArray())) ....
should be changed to
... java.util.Arrays.toString($member.accessor.toArray())) ...
can't we fix for number
{"_class":"Residents", "name":"John Smith", "nid":"19752533333333333", "salary":"30000.0"}
to
{"_class":"Residents", "name":"John Smith", "nid":19752533333333333, "salary":30000.0}
$member.accessor.toArray()
needs to be something like $member.accessor .toArray()
at line 13.
$member.accessor.toArray()
gets printed literally otherwise.
Ctrl-N (or Code -> Generate...), select "toString()". Here you can add the macro using button Settings, pane Templates.
(One way) to use the macro hit Ctrl-N, select "toString()", select the macro, click OK.