@@ -136,6 +136,11 @@ char* {{name}}{{classname}}_ToString({{projectName}}_{{classVarName}}_{{enumName
136136 { {datatype} }_t *{ {name} }{ {^-last} },{ {/-last} }
137137 { {/isEnum} }
138138 { {/isModel} }
139+ { {^isModel} }
140+ { {^isFreeFormObject} }
141+ { {datatype} }_t *{ {name} }{ {^-last} },{ {/-last} }
142+ { {/isFreeFormObject} }
143+ { {/isModel} }
139144 { {#isUuid} }
140145 { {datatype} } *{ {name} }{ {^-last} },{ {/-last} }
141146 { {/isUuid} }
@@ -220,6 +225,14 @@ void {{classname}}_free({{classname}}_t *{{classname}}) {
220225 }
221226 { {/isEnum} }
222227 { {/isModel} }
228+ { {^isModel} }
229+ { {^isFreeFormObject} }
230+ if ({ {{classname} }}->{ {{name} }}) {
231+ {{{complexType} }}_free({ {{classname} }}->{ {{name} }});
232+ { {classname} }->{ {name} } = NULL;
233+ }
234+ { {/isFreeFormObject} }
235+ { {/isModel} }
223236 { {#isUuid} }
224237 if ({ {{classname} }}->{ {{name} }}) {
225238 free({{{classname} }}->{ {{name} }});
@@ -398,6 +411,18 @@ cJSON *{{classname}}_convertToJSON({{classname}}_t *{{classname}}) {
398411 }
399412 { {/isEnum} }
400413 { {/isModel} }
414+ { {^isModel} }
415+ { {^isFreeFormObject} }
416+ cJSON *{ {{name} }}_local_JSON = { {complexType} }_convertToJSON({ {{classname} }}->{ {{name} }});
417+ if({ {{name} }}_local_JSON == NULL) {
418+ goto fail; // custom
419+ }
420+ cJSON_AddItemToObject(item, "{ {{baseName} }}", { {{name} }}_local_JSON);
421+ if(item->child == NULL) {
422+ goto fail;
423+ }
424+ { {/isFreeFormObject} }
425+ { {/isModel} }
401426 { {#isUuid} }
402427 if(cJSON_AddStringToObject(item, "{ {{baseName} }}", { {{classname} }}->{ {{name} }}) == NULL) {
403428 goto fail; //uuid
@@ -528,6 +553,7 @@ fail:
528553 {{classname} }_t *{ {classname} }_local_var = NULL;
529554
530555 { {#vars} }
556+ { {^isContainer} }
531557 { {^isPrimitiveType} }
532558 { {#isModel} }
533559 { {^isEnum} }
@@ -536,7 +562,15 @@ fail:
536562
537563 { {/isEnum} }
538564 { {/isModel} }
565+ { {^isModel} }
566+ { {^isFreeFormObject} }
567+ // define the local variable for { {{classname} }}->{ {{name} }}
568+ { {complexType} }_t *{ {name} }_local_nonprim = NULL;
569+
570+ { {/isFreeFormObject} }
571+ { {/isModel} }
539572 { {/isPrimitiveType} }
573+ { {/isContainer} }
540574 { {/vars} }
541575 { {#vars} }
542576 // { {{classname} }}->{ {{name} }}
@@ -629,6 +663,12 @@ fail:
629663 { {{name} }}_local_nonprim = { {complexType} }{ {#isFreeFormObject} }object{ {/isFreeFormObject} }_parseFromJSON({ {{name} }}); //nonprimitive
630664 { {/isEnum} }
631665 { {/isModel} }
666+ { {^isModel} }
667+ { {^isFreeFormObject} }
668+ { {^required} }if ({ {{name} }}) { {{/required} }
669+ { {{name} }}_local_nonprim = { {complexType} }_parseFromJSON({ {{name} }}); //custom
670+ { {/isFreeFormObject} }
671+ { {/isModel} }
632672 { {#isUuid} }
633673 { {^required} }if ({ {{name} }}) { {{/required} }
634674 if(!cJSON_IsString({ {{name} }}))
@@ -779,6 +819,11 @@ fail:
779819 { {^required} }{ {{name} }} ? { {/required} }{ {{name} }}_local_nonprim{ {^required} } : NULL{ {/required} }{ {^-last} },{ {/-last} }
780820 { {/isEnum} }
781821 { {/isModel} }
822+ { {^isModel} }
823+ { {^isFreeFormObject} }
824+ { {^required} }{ {{name} }} ? { {/required} }{ {{name} }}_local_nonprim{ {^required} } : NULL{ {/required} }{ {^-last} },{ {/-last} }
825+ { {/isFreeFormObject} }
826+ { {/isModel} }
782827 { {#isUuid} }
783828 { {^required} }{ {{name} }} ? { {/required} }strdup({ {{name} }}->valuestring){ {^required} } : NULL{ {/required} }{ {^-last} },{ {/-last} }
784829 { {/isUuid} }
@@ -849,6 +894,14 @@ end:
849894 }
850895 { {/isEnum} }
851896 { {/isModel} }
897+ { {^isModel} }
898+ { {^isFreeFormObject} }
899+ if ({ {{name} }}_local_nonprim) {
900+ {{complexType} }_free({ {{name} }}_local_nonprim);
901+ { {{name} }}_local_nonprim = NULL;
902+ }
903+ { {/isFreeFormObject} }
904+ { {/isModel} }
852905 { {/isPrimitiveType} }
853906 { {/isContainer} }
854907 { {/vars} }
0 commit comments