測試系統:win10 x64
JDK版本:1.8
IDE工具:netbeans 11
已知缺陷:未做轉義
( 如果覺得好用,請點個贊👍~ )
- 需要加載的包
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.68</version> <type>jar</type> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.5</version> <type>jar</type> </dependency>
- 代碼
//Main.java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import org.apache.commons.lang.StringUtils; /** * * @author Administrator */ public class Main { public static void main(String[] args) { String json = "{\"student\":{\"name\":\"cherry\",\"id\":1,\"age\":666,\"desc\":{\"state\":777,\"items\":{\"isTure\":\"ture\"}}}}"; JSONObject jsono = JSON.parseObject(json); System.out.println(json2xml(jsono)); } /** * JSON對象轉XML的字符串 * * @param data 需被轉換的json對象 * @return */ public static String json2xml(JSONObject data) { StringBuilder result = new StringBuilder(); result.append("<xml>"); result.append(json2xmlFormat(data)); result.append("</xml>"); return result.toString(); } /** * JSON對象轉XML格式的字符串 * * @param data 需被轉換的json對象 * @return */ public static String json2xmlFormat(JSONObject data) { StringBuilder result = new StringBuilder(); // 檢測當前對象是否JSON if (checkObjectIsJSON(data)) { data.entrySet().forEach( (entry) -> { String key = entry.getKey(); Object value = entry.getValue(); result.append("<").append(key).append(">"); result.append(checkObjectIsJSON(value) ? json2xmlFormat(JSON.parseObject(String.valueOf(value))) : value); result.append("</").append(key).append(">"); } ); } return result.toString(); } /** * 檢測一個對象是否JSON對象 * * @param o 被檢測的對象 * @return */ public static boolean checkObjectIsJSON(Object o) { boolean result = true; String currentObjectToString = String.valueOf(o); if (StringUtils.isBlank(currentObjectToString)) { result = false; } else { try { JSON.parseObject(currentObjectToString); } catch (Exception e) { result = false; } } return result; } }