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