测试系统: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; } }