问题描述:

白天,前端同事跑过来说,你的接口返给前端的是一堆带斜杠转义字符的数据,数据格式未处理哦?然后,仔细一看果然,晃眼。。

具体数据内容不再描述,大致格式如下:

"[{\"birthday\":\"2000\",\"major\":[\"挖掘机\",\"炒菜\"],\"name\":\"xiaoming\",\"comment\":\"hello world\",\"age\":25.2,\"status\":0}]";

这样的数据格式确实不便于前端接收处理,我们希望的是能够输出正常的json格式数据,网上百度了下。

解决方案:

【1】字符串方法:replace();

测试程序:

@Test
public void fun1(){String data = "[{\"birthday\":\"2000\",\"major\":[\"挖掘机\",\"炒菜\"],\"name\":\"xiaoming\",\"comment\":\"hello world\",\"age\":25.2,\"status\":0}]";String result = data.replace("\"", "");System.out.println(result);
}

测试结果:

[{birthday:2000,major:[挖掘机,炒菜],name:xiaoming,comment:hello world,age:25.2,status:0}]

【2】配置一个序列化类,fastjson数据处理

字符串转换配置类:

/*** fastjson转义字符处理Utils*/
public class StringToJsonSerizlizerConfig implements ObjectSerializer {@Overridepublic void write(JSONSerializer jsonSerializer, Object o, Object o1, Type type, int i) throws IOException {jsonSerializer.write(JSONObject.parseObject(o.toString()));}
}

这个配置类,在我们测试程序中自定义一个序列化的局部变量,并通过JSONField注解赋给这个变量序列化属性。

@JSONField(serializeUsing = StringToJsonSerializer.class)

测试程序:

/*** fastjson转义字符处理* 注入工具类*/
@JSONField(serializeUsing = StringToJsonSerializerUtils.class)
private String jsonFromatTemplate;/*** fastjson转义字符处理:注入工具类方式*/
@Test
public void fun2(){String data = "[{\"birthday\":\"2000\",\"major\":[\"挖掘机\",\"炒菜\"],\"name\":\"xiaoming\",\"comment\":\"hello world\",\"age\":25.2,\"status\":0}]";jsonFromatTemplate = result;System.out.println("fastjson转义字符处理结果:" + jsonFromatTemplate);
}

测试结果:

[{"birthday":"2000","major":["挖掘机","炒菜"],"name":"xiaoming","comment":"hello world","age":25.2,"status":0}]

【3】JSONObject转换

当然,如果嫌第二种麻烦,也可以直接这样转:

Object json = JSONObject.toJSON(/*需要序列化的对象*/); //格式化转义字符\
String json = JSONObject.toJSON(/*需要序列化的对象*/); //产生转义字符\

测试程序: 

@Test
public void fun3(){String data = "[{\"birthday\":\"2000\",\"major\":[\"挖掘机\",\"炒菜\"],\"name\":\"xiaoming\",\"comment\":\"hello world\",\"age\":25.2,\"status\":0}]";Object o = JSONObject.toJSON(data);System.out.println(o.toString());
}

测试结果:

[{"birthday":"2000","major":["挖掘机","炒菜"],"name":"xiaoming","comment":"hello world","age":25.2,"status":0}]

愿你就像早晨八九点钟的太阳,活力十足,永远年轻。

(3)fastjson带有转义字符的数据格式处理相关推荐

  1. JsonArray或者JsonObject转字符串后里面带有转义字符或者反斜杠的处理方式

    一般出现这种toString后json串里面带有转义字符的原因是往jsonObject中直接put了String类型的内容,比如jsonObject.put("key"," ...

  2. Android开发之WebView加载HTML源码包含转义字符实现富文本显示的方法

    老套路先看效果图: WebView加载带有转移字符的HTML源码 再看转义后的字符的效果图: 先看WebView加载HTML源码的方法如下: webview.loadDataWithBaseURL(n ...

  3. 一种Map转Json字符串,出现“\”转义字符的解决办法

    项目中出现了这样一个问题,当一个Map被转成Json字符串后,由于业务需求,会将Map转为JsonObject,添加元素后,又转成Json字符串,最后再被包装到另一个Map里,被转成Json字符串发送 ...

  4. 4种方法转义字符解决报错FileNotFoundError: [Errno 2] No such file or directory

    写在前面: 前面的案例不想看可以直接看结尾的4个结论. 直接看第4个结论,就是文章的最后.二八定律.[方法4通用性极强] 快速跳转至 通用性方法4 QQ:1981791622. 备注:我是CSDN道友 ...

  5. Kotlin极简教程:第4章 基本数据类型与类型系统

    原文链接:https://github.com/EasyKotlin 到目前为止,我们已经了解了Kotlin的基本符号以及基础语法.我们可以看出,使用Kotlin写的代码更简洁.可读性更好.更富有生产 ...

  6. ajax的核心有哪些,ajax的核心

    // ajax 简称(a 代表异步 j 代表javascript a 代表 and x 代表xml--是一种带有标签的数据格式,被json取代了) //ajax 是异步对象 主要用于局部刷新,请求数据 ...

  7. 【转载】用JS控制输入内容

    不允许输入: !@#$%^&* onKeypress="if ((event.keyCode > 32 && event.keyCode < 48) || ...

  8. php 处理表单里面的 单双引号

    转载链接:http://developer.51cto.com/art/200911/165392.htm 我们今天要向大家介绍的是PHP magic_quotes_gpc的具体使用方法.大家都知道在 ...

  9. 【PHP入门到精通】:Ch05:字符串处理

    Ch05: 字符串简介 5.1 字串说明  字符串是指由>=0个字符构成的一串字符,所以叫字符串.这里所说的字符主要包括以下几种类型: 数字类型:如1, 2, 3, 4等. 字母类型:如果a, ...

  10. Python语言数据类型-----数字和字符串

    Python语言的数字类型 整数类型 浮点数类型 复数类型 整数类型与数学中的整数类型概念一致,没有取值范围. 十进制数为 1010,99,-217 十六进制为 0x9a, -0x89 (0x,0X开 ...

最新文章

  1. [LeetCode] [C++] 第一轮刷题总结(持续更新~~~)
  2. linux基础(一)
  3. java图像分类源码_在Android设备上使用NCNN图像分类的demo
  4. Python正则表达式介绍 re.findall(pattern, str, flag=0)/re.I re.L re.M
  5. MySQL服务启动及密码设置/配置远程访问
  6. 傻瓜都能看懂的高并发量服务器架构
  7. 交错级数如何判断收敛_从微分方程的级数解到两个特殊方程(1):关于平凡点的解...
  8. [转]cubemap soft shadow
  9. G20杭州峰会上云 实现0安全事件
  10. jQeury 批量删除
  11. 数组中查找並返回数组_剑指 Offer 04. 二维数组中的查找
  12. Data Collection with Apache Flume(一)
  13. php mud游戏源码,mud 文字游戏 - 源码下载|游戏|源代码 - 源码中国
  14. 论文阅读笔记——具有圆形光滑标记的面向任意对象检测
  15. Androidstudio 里面的app下目录介绍
  16. 企业数字化转型战略权威指南
  17. 超详细的Python实现百度云盘模拟登陆(模拟登陆进阶)
  18. java解析返回报文_Java解析json报文实例解析
  19. windows 10和windows server 2016系统AD的administrator密码修改
  20. 【渝粤题库】陕西师范大学200031 中国现代文学 作业

热门文章

  1. RabbitMQ消息幂等性之全局唯一ID
  2. 动态规划实战篇--斐波那契数列
  3. 再谈mysql数据库之索引,联合索引,覆盖索引
  4. Mybatis原理解析(四)--查询流程
  5. 【第43题】【062题库】2019年OCP认证062考试新题
  6. Linux登陆密码策略
  7. 联发科被动“卡位”内地集成电路市场 剑指老对手展讯
  8. 《测试驱动数据库开发》——2.1 TDD中类的角色
  9. 奇虎360-数据可视化
  10. DataTable序列化为JSON字符串