Map中放入对象字符串转义问题

Posted excellencesy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

 这样就可以解决对象字符串被转义的问题了

以上是关于Map中放入对象字符串转义问题的主要内容,如果未能解决你的问题,请参考以下文章

转义正则表达式字符串

为列中的值获取长度为 1 或 2 的子字符串并在输出中放入单列?

与另一个片段通信的片段接口

Python编程快速上手 往让繁琐工作自动化-6.6 习题

在 python 模块文档字符串中放入啥? [关闭]

在字符串中放入新行以进行翻译