package Ġcom . on eli ang . k tx . frame . bean Ċ Ċ import Ġcom . on eli ang . k tx . Constants Ċ import Ġcom . on eli ang . k tx . util . common . Object Util Ċ import Ġcom . on eli ang . k tx . util . json . Json Util Ċ Ċ class ĠJson Tree < T Ġ: ĠAny > Ġ: ĠTree < T >() Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġjson Ġtree , the Ġname Ġof Ġhas Ġchildren Ġfield ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġhas Children Ġ= Ġ" has Children " ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġjson Ġtree Ġ, the Ġname Ġof Ġchildren 's Ġfield ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġchildren Ġ= Ġ" children " ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġjson Ġtree , key Ġmeans Ġthe Ġjson 's Ġproperties , value Ġmeans Ġthe Ġvalue Ġof Ġobject 's Ġfield ĊĠĠĠĠ Ġ* Ġ@ param Ġkey Value Map ĊĠĠĠĠ Ġ* Ġ@ return ĠString ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġgenerate Json Tree ( key Value Map : ĠMap < String , ĠString >): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġgenerate Json Tree ( this . root , Ġkey Value Map , ĠJson Util . DEFAULT _ JSON _ PROCESS OR ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġjson Ġtree , key Ġmeans Ġthe Ġjson 's Ġproperties , value Ġmeans Ġthe Ġvalue Ġof Ġobject 's Ġfield ĊĠĠĠĠ Ġ* Ġ@ param Ġkey Value Map ĊĠĠĠĠ Ġ* Ġ@ param Ġjson Processor ĊĠĠĠĠ Ġ* Ġ@ return ĠString ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġgenerate Json Tree ( key Value Map : ĠMap < String , ĠString >, Ġjson Processor : ĠJson Util . Json Processor ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġgenerate Json Tree ( this . root , Ġkey Value Map , Ġjson Processor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġjson Ġtree , key Ġmeans Ġthe Ġjson 's Ġproperties , value Ġmeans Ġthe Ġvalue Ġof Ġobject 's Ġfield ĊĠĠĠĠ Ġ* Ġ@ param Ġroot ĊĠĠĠĠ Ġ* Ġ@ param Ġkey Value Map ĊĠĠĠĠ Ġ* Ġ@ param Ġjson Processor ĊĠĠĠĠ Ġ* Ġ@ return ĠString ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate Json Tree ( root : ĠTreeNode < T >, Ġkey Value Map : ĠMap < String , ĠString >, Ġjson Processor : ĠJson Util . Json Processor Ġ= ĠJson Util . DEFAULT _ JSON _ PROCESS OR ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstringBuilder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġroot . instance ĊĠĠĠĠĠĠĠ Ġval Ġiterator Ġ= Ġkey Value Map . entries . iterator () ĊĠĠĠĠĠĠĠ ĠstringBuilder . append ( Constants . Symbol . BIG _ BRACK ET _ LEFT ) ĊĠĠĠĠĠĠĠ Ġwhile Ġ( iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġiterator . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġentry . key ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfieldName Ġ= Ġentry . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmethod ReturnValue Ġ= ĠObject Util . getter Or Is Method Invoke ( instance , ĠfieldName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod ReturnValue Ġ= Ġjson Processor . process < Any >( null , ĠfieldName , Ġmethod ReturnValue , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ( Constants . Symbol . DOUBLE _ QUOTE Ġ+ Ġkey Ġ+ ĠConstants . Symbol . DOUBLE _ QUOTE Ġ+ ĠConstants . Symbol . COL ON Ġ+ Ġmethod ReturnValue . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ( Constants . Symbol . COMMA ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! root . is Leaf ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild List Ġ= Ġroot . child NodeList ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ( Constants . Symbol . COMMA Ġ+ ĠConstants . Symbol . DOUBLE _ QUOTE Ġ+ Ġhas Children Ġ+ ĠConstants . Symbol . DOUBLE _ QUOTE Ġ+ ĠConstants . Symbol . COL ON Ġ+ Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ( Constants . Symbol . COMMA Ġ+ ĠConstants . Symbol . DOUBLE _ QUOTE Ġ+ Ġchildren Ġ+ ĠConstants . Symbol . DOUBLE _ QUOTE Ġ+ ĠConstants . Symbol . COL ON Ġ+ ĠConstants . Symbol . MIDDLE _ BRACK ET _ LEFT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Index Ġ= Ġchild List . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( node Ġin Ġchild List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ( generate Json Tree ( node , Ġkey Value Map , Ġjson Processor )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ< Ġlast Index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ( Constants . Symbol . COMMA ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ( Constants . Symbol . MIDDLE _ BRACK ET _ RIGHT ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ( Constants . Symbol . COMMA Ġ+ ĠConstants . Symbol . DOUBLE _ QUOTE Ġ+ Ġhas Children Ġ+ ĠConstants . Symbol . DOUBLE _ QUOTE Ġ+ ĠConstants . Symbol . COL ON Ġ+ Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠstringBuilder . append ( Constants . Symbol . BIG _ BRACK ET _ RIGHT ) ĊĠĠĠĠĠĠĠ Ġreturn ĠstringBuilder . toString () ĊĠĠĠ Ġ} Ċ } Ċ