java bom json,JSON字符串带BOM头"ufeff"

"本文讲述了开发者在使用SpringBoot的RestTemplate调用第三方接口时,遇到JSON字符串前的BOM头"ufeff"导致解析错误的问题,通过Debug和自定义方法移除BOM头,解决了这一问题,提供了解决步骤和关键代码片段。"
摘要由CSDN通过智能技术生成

调用三方接口返回值JSON字符串带BOM头"\ufeff",JSON解析死活报错。

我是用SpringBoot的RestTemplate调用三方接口的,一开始返回值我是用对象接收返回值,发现一直报错,我以为是RestTemplate的接收转换有问题,就将返回值换成了String类型去接收。接收到字符串后再转JSON、JSON字符串解析死活报错。

接口返回值日志如下:

2020-03-25 13:18:55.687 DEBUG 8595 --- [ main] o.s.web.client.RestTemplate : Response 200 OK

2020-03-25 13:18:55.688 DEBUG 8595 --- [ main] o.s.web.client.RestTemplate : Reading to [java.lang.String] as "application/json;charset=UTF-8"

2020-03-25 13:19:57.370 DEBUG 8595 --- [ main] com.hopefun.scm.open.api.EyuanApi : 返回值:{"message":"成功","code":"1"}

在IDEA开发过程中,一开始光看返回值打印的日志是看不出来任何毛病的,并且我将这个返回值的JSON字符串复制到Sublime编辑器中也看不出问题所在。

一开始很自信没有Debug查看返回值,后来当我开启了Debug模式后终于发现了问题所在。原来在JSON字符串前面还带着"\ufeff",导致JSON字符串解析报错,原来罪魁祸首是这个玩意"\ufeff"。Debug还是个好玩意啊。

终于发现问题所在解决就轻松多了。

public static final String BOM = "\ufeff";

/**

* 去除BOM

*

* @param bomStr JSON字符串

* @return 去除BOM后的JSON字符串

*/

private String recursiveBom(String bomStr) {

String str = "";

if (bomStr.startsWith(BOM)) {

str = bomStr.substring(1);

if (str.startsWith(BOM)) {

recursiveBom(str);

}

}

return str;

}

//使用,如此得出来的字符串就是纯正的JSON字符串啦。妈妈再也不怕解析报错啦。。。

recursiveBom(bomStr.trim());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值