@@ -67,19 +67,30 @@ public function genModel(
6767 if ($ notNullable && $ value ['type ' ] == 'boolean ' ) {
6868 $ cast = ' (bool) ' ;
6969 }
70+ $ getterBody = '$this->getData(self:: ' . strtoupper ($ name ) . ') ' ;
71+ if ($ value ['type ' ] == 'json ' ) {
72+ $ getterBody = 'json_decode($this->getData(self::OPTIONS) ?? ' . ($ notNullable ? '\'[] \'' : '\'null \'' ) . ', true) ' ;
73+ }
7074
7175 $ getterName = $ this ->createGetterName ($ name , $ value );
7276 $ getter = $ class ->addMethod ($ getterName [0 ])
7377 ->addComment ($ getterName [1 ])
7478 ->setVisibility ('public ' )
75- ->setBody ('return ' . $ cast . ' $this->getData(self:: ' . strtoupper ( $ name ) . ' ) ; ' );
79+ ->setBody ('return ' . $ cast . $ getterBody . ' ; ' );
7680
7781 $ setterName = $ this ->createSetterName ($ name , $ value );
7882 $ setter = $ class ->addMethod ($ setterName [0 ])
7983 ->addComment ($ setterName [1 ])
8084 ->setVisibility ('public ' );
8185 $ setParam = $ setter ->addParameter ($ this ->snakeCaseToCamelCase ($ name ));
82- $ setter ->setBody ('return $this->setData(self:: ' . strtoupper ($ name ) . ', $ ' . $ this ->snakeCaseToCamelCase ($ name ) . '); ' );
86+ $ setterBody = '$ ' . $ this ->snakeCaseToCamelCase ($ name );
87+ if ($ value ['type ' ] == 'json ' && !$ notNullable ) {
88+ $ setterBody = 'null === $options ? json_encode($options) : null ' ;
89+ }
90+ if ($ value ['type ' ] == 'json ' && $ notNullable ) {
91+ $ setterBody = 'json_encode($options) ' ;
92+ }
93+ $ setter ->setBody ('return $this->setData(self:: ' . strtoupper ($ name ) . ', ' . $ setterBody . '); ' );
8394
8495 $ getter ->setReturnType ($ this ->convertType ($ value ['type ' ]));
8596 $ getter ->setReturnNullable ($ generated ? true : !$ notNullable );
0 commit comments