響應Ajax請求的Json被中的”被轉義成\"


問題描述-

今天寫了一些代碼,功能大概前端發送Ajax請求,后端查詢數據庫后將結果數組封裝成Json字符串格式返回頁面。對Json的處理使用的類庫為Jackson。

后台代碼無報錯,控制台打印查詢結果列表顯示正常。

 

 

頁面無法正常解析Json,打開瀏覽器控制台查看response數據,顯示json中的"被轉義成了\",導致錯誤。

 

 問題分析-

數據庫查詢結果打印出來無異常,傳遞到前台時json有問題,說明問題出在將結果list處理成json這一步。遂查看處理代碼

ObjectMapper objectMapper=new ObjectMapper();
        String categoriesString=null;
        try {
            categoriesString=objectMapper.writeValueAsString(categories);
            System.out.println("MSG:[categorys/json]="+categories.toString());
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        resp.setContentType("application/json;charset=utf-8");
        objectMapper.writeValue(resp.getWriter(),categoriesString);

其中MSG的打印也時正常,說明問題出現在這一句:

objectMapper.writeValue(resp.getWriter(),categoriesString);

 

問題解決-

方法有二:其一時繼續使用writeValueAsString轉換成字符串后直接使用response流返回:

categoriesString=objectMapper.writeValueAsString(categories);
resp.setContentType("application/json;charset=utf-8");
resp.getWriter().write(categoriesString);

其二是不適用writeValueAsString轉換字符串,直接調用方法writeValue,第二個參數傳遞list數組即可:

resp.setContentType("application/json;charset=utf-8");
objectMapper.writeValue(resp.getOutputStream(),categories);

 


免責聲明!

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



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