Spring MVC 返回的 JSON 帶有斜杠


  例子,

  JSON:

  代碼:

   @RequestMapping(params = "xxx", method = RequestMethod.GET)
    @ResponseBody
    @ServiceLog
    public AjaxModel getParcelsByExpressCompanyWaybillNo(@RequestParam (value = "expressWaybillNos") String expressWaybillNosJson) throws JsonParseException, JsonMappingException, IOException {
        List<String> expressWaybillNos = JacksonUtils.fromJson(expressWaybillNosJson, ArrayList.class, String.class);
        List<Parcel> parcels = parcelService.getParcelByExpressCompanyWaybillNos(expressWaybillNos);
        
        System.out.println(JacksonUtils.toJson(parcels));
        AjaxModel model = new AjaxModel(true);
        model.setData(JacksonUtils.toJson(parcels));
        model.setMsg("獲取包裹信息成功");
        return model;
    }

  上面的例子,是生成的 JSON 作為字符串賦值到 model 對象的 data 字段,然后 Spring MVC 返回 model,把 model 序列化成 JSON,Jackson 是這樣處理的:把類型為字符串的 data 字段轉化成字符串,也就是直接將其被雙引號包裹,那么 data 的值也就是那段 JSON 被雙引號包裹,那么 JSON 里面的雙引號就需要被轉義,需要加上斜杠,;而如果客戶端要把這個 model 對象序列化得到的 JSON 轉換成 model 對象,那么應該是這樣處理的,把 data 的值,也就是帶有大量斜杠的字符串,賦值到目標的 model 對象的 data 字段,那么,只要如下,就能把字段 data 的值轉化成 List<Parcel> 對象:

        String test = FileUtils.readFileToString(new File("C:\\Users\\Administrator\\Desktop\\test.txt"));
        AjaxModel model = JacksonUtils.fromJson(test, AjaxModel.class);
        System.out.println(model.getData().toString());
        List<Parcel> parcels = JacksonUtils.fromJson(model.getData().toString(), List.class, Parcel.class);
        System.out.println(parcels.get(0).getAssBillNo());

  test 對象的數據來源就是一個包含上述文本的 .txt 文件。

  總的來說,就是 JSON 本身含有雙引號或者其他需要轉義的字符就會出現這種情況;


免責聲明!

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



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