package Ġxyz . red torch . common . utils Ċ Ċ import Ġcom . fasterxml . jackson . databind . JsonNode Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . flip k art . z json patch . Diff Flags Ċ import Ġcom . flip k art . z json patch . Json Diff Ċ import Ġcom . flip k art . z json patch . Json Patch Ċ import Ġjava . util .* ĊĊ Ċ object ĠJson Utils Ġ{ ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġval Ġmapper Ġ= ĠObjectMapper () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠJSON åŃĹç¬¦ä¸² è½¬æį¢ ä¸º å¯¹è±¡ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġ< T > Ġread ToObject ( json String : ĠString , Ġtype : ĠClass < T >): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmapper . readValue ( json String , Ġtype ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠJSON åŃĹç¬¦ä¸² è½¬æį¢ ä¸º JsonNode ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġread ToJson Node ( json String : ĠString ): ĠJsonNode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmapper . read Tree ( json String ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠJsonNode è½¬æį¢ ä¸º å¯¹è±¡ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġ< T > Ġconvert ToObject ( node : ĠJsonNode , Ġtype : ĠClass < T >): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmapper . convert Value ( node , Ġtype ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå¯¹è±¡ è½¬æį¢ ä¸º JSON åŃĹç¬¦ä¸² ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġwrite ToJson String ( obj : ĠAny ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmapper . writeValue AsString ( obj ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå¯¹è±¡ è½¬æį¢ ä¸º JsonNode ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġconvert ToJson Node ( obj : ĠAny ): ĠJsonNode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmapper . convert Value ( obj , ĠJsonNode :: class . java ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠJsonNode å·® å¼Ĥ è½¬æį¢ ä¸º Json Patch ï¼Ī RFC Ġ 6 9 0 2 ï¼ī å¯¹åºĶçļĦ JsonNode ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġdiff As Json Patch ( source JsonNode : ĠJsonNode , Ġtarget JsonNode : ĠJsonNode ): ĠJsonNode Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġflags Ġ= ĠDiff Flags . dont Normalize Op Into Move And Copy (). clone () ĊĠĠĠĠĠĠĠ Ġreturn ĠJson Diff . as Json ( source JsonNode , Ġtarget JsonNode , Ġflags ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå¯¹è±¡ å·® å¼Ĥ è½¬æį¢ ä¸º Json Patch ï¼Ī RFC Ġ 6 9 0 2 ï¼ī å¯¹åºĶçļĦ JsonNode ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġdiff As Json Patch ( source Object : ĠAny , Ġtarget Object : ĠAny ): ĠJsonNode Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsource JsonNode Ġ= Ġconvert ToJson Node ( source Object ) ĊĠĠĠĠĠĠĠ Ġval Ġtarget JsonNode Ġ= Ġconvert ToJson Node ( target Object ) ĊĠĠĠĠĠĠĠ Ġreturn Ġdiff As Json Patch ( source JsonNode , Ġtarget JsonNode ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå¯¹è±¡ å·® å¼Ĥ è½¬æį¢ ä¸º Json Patch ï¼Ī RFC Ġ 6 9 0 2 ï¼ī åŃĹç¬¦ä¸² ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġdiff As Json Patch String ( source Object : ĠAny , Ġtarget Object : ĠAny ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdiff As Json Patch ( source Object , Ġtarget Object ). toString (); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠJsonNode åºĶçĶ¨ Json Patch ï¼Ī RFC Ġ 6 9 0 2 ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġapply Json Patch ( source : ĠJsonNode , Ġjson Patch : ĠJsonNode ): ĠJsonNode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠJson Patch . apply ( json Patch , Ġsource ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠJsonNode åºĶçĶ¨ Json Patch ï¼Ī RFC Ġ 6 9 0 2 ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġapply Json Patch In Place ( source : ĠJsonNode , Ġjson Patch : ĠJsonNode ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠJson Patch . apply In Place ( json Patch , Ġsource ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠJsonNode åºĶçĶ¨ Json Patch ï¼Ī RFC Ġ 6 9 0 2 ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġapply Json Patch ( source : ĠJsonNode , Ġjson Patch String : ĠString ): ĠJsonNode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠJson Patch . apply ( read ToJson Node ( json Patch String ), Ġsource ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠJsonNode åºĶçĶ¨ Json Patch ï¼Ī RFC Ġ 6 9 0 2 ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġapply Json Patch In Place ( source : ĠJsonNode , Ġjson Patch String : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠJson Patch . apply In Place ( read ToJson Node ( json Patch String ), Ġsource ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå¯¹è±¡ åºĶçĶ¨ Json Patch ï¼Ī RFC Ġ 6 9 0 2 ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġ< T > Ġapply Json Patch ( obj : ĠT , Ġjson Patch : ĠJsonNode ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnon Null Obj Ġ= Ġobj !! ĊĠĠĠĠĠĠĠ Ġreturn Ġconvert ToObject ( Json Patch . apply ( json Patch , Ġconvert ToJson Node ( non Null Obj )), Ġnon Null Obj :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå¯¹è±¡ åºĶçĶ¨ Json Patch ï¼Ī RFC Ġ 6 9 0 2 ï¼ī åŃĹç¬¦ä¸² ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġ< T > Ġapply Json Patch ( obj : ĠT , Ġjson Patch String : ĠString ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnot Null Obj Ġ= Ġobj !! ĊĠĠĠĠĠĠĠ Ġreturn Ġconvert ToObject ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Patch . apply ( read ToJson Node ( json Patch String ), Ġconvert ToJson Node ( notNull Obj )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnot Null Obj :: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }