44import com .alibaba .fastjson .JSONArray ;
55import com .alibaba .fastjson .JSONObject ;
66import com .xwintop .xJavaFxTool .controller .developTools .JsonConvertToolController ;
7+ import com .xwintop .xJavaFxTool .services .developTools .JsonConvertToolServiceUtil .ArrayProcessor ;
8+ import com .xwintop .xJavaFxTool .services .developTools .JsonConvertToolServiceUtil .PropertyTree ;
9+ import com .xwintop .xJavaFxTool .services .developTools .JsonConvertToolServiceUtil .TreeBuilder ;
710import com .xwintop .xcore .util .StrUtil ;
811import com .xwintop .xcore .util .XML2BeanUtils ;
912import lombok .Getter ;
1417import org .dom4j .io .SAXReader ;
1518import org .yaml .snakeyaml .Yaml ;
1619
20+ import java .io .StringReader ;
1721import java .math .BigDecimal ;
18- import java .util .HashMap ;
19- import java .util .List ;
20- import java .util .Map ;
22+ import java .util .*;
23+
2124/**
2225 * @ClassName: JsonConvertToolService
2326 * @Description: Json转换工具
@@ -61,7 +64,7 @@ private String jsonToJavaBean(String beanName, Object jsonObject) {
6164 StringBuilder importString = new StringBuilder ("package ;" );
6265 StringBuilder propertyString = new StringBuilder ();
6366 StringBuilder getSetString = new StringBuilder ();
64- Map <String ,String > subclass = new HashMap <String , String >();
67+ Map <String , String > subclass = new HashMap <String , String >();
6568 for (Map .Entry <String , Object > entry : ((JSONObject ) jsonObject ).entrySet ()) {
6669 Object value = entry .getValue ();
6770 String key = entry .getKey ();
@@ -84,21 +87,21 @@ private String jsonToJavaBean(String beanName, Object jsonObject) {
8487 getSetString .append ("\n \t public void set" + keyName + "(List<" + keyName + "> " + key + "){\n \t \t this." + key + " = " + key + ";\n \t }" );
8588 getSetString .append ("\n \t public List<" + keyName + "> " + "get" + keyName + "(){\n \t \t return this." + key + ";\n \t }" );
8689 String subclassString = jsonToJavaBean (keyName , value );
87- subclass .put (keyName ,subclassString );
90+ subclass .put (keyName , subclassString );
8891 } else if (value instanceof Map ) {
8992 propertyString .append ("\n \t private " + keyName + " " + key + ";" );
9093 String subclassString = jsonToJavaBean (keyName , value );
91- subclass .put (keyName ,subclassString );
94+ subclass .put (keyName , subclassString );
9295 getSetString .append ("\n \t public void set" + keyName + "(" + keyName + " " + key + "){\n \t \t this." + key + " = " + key + ";\n \t }" );
9396 getSetString .append ("\n \t public " + keyName + " get" + keyName + "(){\n \t \t return this." + key + ";\n \t }" );
9497 }
9598 }
9699 afterString .append (importString .toString ());
97- afterString .append ("\n public class " + beanName + "\n {" );
100+ afterString .append ("\n public class " + beanName + "\n {" );
98101 afterString .append (propertyString .toString ());
99- afterString .append ("\n " + getSetString .toString ());
102+ afterString .append ("\n " + getSetString .toString ());
100103 afterString .append ("\n }" );
101- subclass .forEach ((key ,value )-> {
104+ subclass .forEach ((key , value ) -> {
102105 afterString .append ("\n \n =============================\n " );
103106 afterString .append (value .toString ());
104107 });
@@ -118,7 +121,7 @@ private String jsonToCBean(String beanName, Object jsonObject) {
118121 }
119122 StringBuilder afterString = new StringBuilder ();
120123 StringBuilder propertyString = new StringBuilder ();
121- Map <String ,String > subclass = new HashMap <String , String >();
124+ Map <String , String > subclass = new HashMap <String , String >();
122125 for (Map .Entry <String , Object > entry : ((JSONObject ) jsonObject ).entrySet ()) {
123126 Object value = entry .getValue ();
124127 String key = entry .getKey ();
@@ -132,17 +135,17 @@ private String jsonToCBean(String beanName, Object jsonObject) {
132135 } else if (value instanceof List ) {
133136 propertyString .append ("\n \t public List<" + keyName + "> " + key + " {get; set;}" );
134137 String subclassString = jsonToCBean (keyName , value );
135- subclass .put (keyName ,subclassString );
138+ subclass .put (keyName , subclassString );
136139 } else if (value instanceof Map ) {
137140 propertyString .append ("\n \t public " + keyName + " " + key + " {get; set;}" );
138141 String subclassString = jsonToCBean (keyName , value );
139- subclass .put (keyName ,subclassString );
142+ subclass .put (keyName , subclassString );
140143 }
141144 }
142- afterString .append ("\n public class " + beanName + "\n {" );
145+ afterString .append ("\n public class " + beanName + "\n {" );
143146 afterString .append (propertyString .toString ());
144147 afterString .append ("\n }" );
145- subclass .forEach ((key ,value )-> {
148+ subclass .forEach ((key , value ) -> {
146149 afterString .append ("\n \n =============================\n " );
147150 afterString .append (value .toString ());
148151 });
@@ -190,7 +193,48 @@ public void yamlToJsonAction() throws Exception {
190193 jsonConvertToolController .getJsonTextArea ().setText (jsonString );
191194 }
192195
196+ public void propsToYamlAction () throws Exception {
197+ String jsonString = jsonConvertToolController .getJsonTextArea ().getText ();
198+ Properties properties = new Properties ();
199+ properties .load (new StringReader (jsonString ));
200+ PropertyTree tree = new TreeBuilder (properties , true ).build ();
201+ tree = new ArrayProcessor (tree ).apply ();
202+ jsonConvertToolController .getAfterTextArea ().setText (tree .toYAML ());
203+ }
204+
205+ public void yamlToPropsAction () throws Exception {
206+ String afterString = jsonConvertToolController .getAfterTextArea ().getText ();
207+ Yaml yaml = new Yaml ();
208+ Map <String , Object > map = (Map <String , Object >) yaml .load (afterString );
209+ Properties properties = new Properties () {
210+ @ Override
211+ public synchronized Enumeration <Object > keys () {
212+ return Collections .enumeration (new TreeSet <Object >(super .keySet ()));
213+ }
214+ };
215+ iterateAndProcess (properties , map , "" );
216+ StringBuffer stringBuffer = new StringBuffer ();
217+ Iterator iterator = properties .keySet ().iterator ();
218+ while (iterator .hasNext ()) {
219+ Object key = iterator .next ();
220+ stringBuffer .append (key + "=" + properties .get (key ) + "\n " );
221+ }
222+ jsonConvertToolController .getJsonTextArea ().setText (stringBuffer .toString ());
223+ }
224+
193225 public JsonConvertToolService (JsonConvertToolController jsonConvertToolController ) {
194226 this .jsonConvertToolController = jsonConvertToolController ;
195227 }
228+
229+ private static void iterateAndProcess (Properties properties , Map <String , Object > ymlEntry , String rootKey ) {
230+ for (String key : ymlEntry .keySet ()) {
231+ Object value = ymlEntry .get (key );
232+ if (value instanceof Map ) {
233+ iterateAndProcess (properties , (Map <String , Object >) value , StringUtils .isEmpty (rootKey ) ? key : rootKey
234+ + "." + key );
235+ } else {
236+ properties .setProperty (StringUtils .isEmpty (rootKey ) ? key : rootKey + "." + key , value .toString ());
237+ }
238+ }
239+ }
196240}
0 commit comments