Map中放入對象字符串轉義問題


 在做Zuul網關日志處理的時候,有以下需求:

(1)記錄請求成功的日志,要求記錄請求返回的結果。

遇到的問題:

(1)當請求的結果事對象時,會將其轉成字符串,在put進map的時候,字符串就會被轉義

(2)請求的結果不一定的對象,也可能時數字或者字符串

    public static String getObjectStr(){
        Map<String,Object> param = new HashMap<>();
        param.put("name", "zhangsan");
        param.put("age", 18);
        return JSONObject.toJSONString(param);
    }
    
    public static void main(String[] args) {
        String paramStr = getObjectStr();//模擬獲取請求的 結果
        
        Map<String,Object> result = new HashMap<>();
        result.put("code", 200);
        result.put("body", paramStr);
        
        System.out.println(JSONObject.toJSON(result));
    }

 

 

 解決方法:

(1)對獲取到的結果字符串嘗試進行JSONObject解析,若解析成功,就將該對象put進map;若解析不成功,就直接獲取到的字符串。例:

public static String getObjectStr(){
        Map<String,Object> param = new HashMap<>();
        param.put("name", "zhangsan");
        param.put("age", 18);
        return JSONObject.toJSONString(param);
    }
    
    public static void main(String[] args) {
        String paramStr = getObjectStr();//模擬獲取請求的 結果
        
        Map<String,Object> result = new HashMap<>();
        result.put("code", 200);
        try {
            result.put("body", JSONObject.parse(paramStr));
        } catch (Exception e) {
            result.put("body", paramStr);
        }
        
        System.out.println(JSONObject.toJSON(result));
    }

 

JSONObject:import com.alibaba.fastjson.JSONObject;

 這樣就可以解決對象字符串被轉義的問題了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM