CONMISANMA的正確答案——簡單的JSON轉XML

測試系統:win10 x64

JDK版本:1.8

IDE工具:netbeans 11

已知缺陷:未做轉義

( 如果覺得好用,請點個贊👍~ )

 

  1. 需要加載的包
    
            <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>

     

  2. 代碼
    //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;
        }
    }
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章