{
"goodsSingleId": "49daaf6e-e3b8-11e7-b85f-00163e136aec",
"goodsSingleName": "(332762)史丹利 STST14440-8-23 手持式 塑料收纳盒20"黄黑",
"goodsMainPhoto": "http://120.27.234.178:81/171218/f0735947-5881-4eec-a35d-b4b034931aef.jpg",
"generalPrice": "157"
}
1、先核查你的数据源,为什么会带一个引号,从数据源去规避 做特殊处理
在获取goodsSingleName字段后实体类的set对象方法里把引号replace掉
可以replace掉
试一试 str1 = str.replace("\"","").replace("\"","");
不知道符不符合心意
这个经量让后台去处理,前台处理后台的数据不觉得有点怪吗,让后台看看这个引号是怎么造成的有用没用,你只要原样使用数据就好了
1、首先核查你的数据源,为什么会带一个引号,从数据源去规避
2、如果数据源就是这个,就要考虑对这个做特殊处理
最好在获取goodsSingleName字段后实体类的set对象方法里把引号replace掉
先判断后端传过来的字符串是不是json串,如果不是,说明后端处理数据有问题,应该让后端改bug,判断json串可以用下面的代码
function isJSON(str) {
if (typeof str == 'string') {
try {
var obj=JSON.parse(str);
if(typeof obj == 'object' && obj ){
return true;
}else{
return false;
}
} catch(e) {
console.log('error:'+str+'!!!'+e);
return false;
}
}
console.log('It is not a string!')
}
尽量后台处理,使后台传过来的json格式正确,你这个json串格式有问题
你这应该是数据本身包含引号“”,需要转义处理一下:https://www.cnblogs.com/qgli/p/3773110.html
如果你数据包含换行,可以用正则多行替换下,否则要替换麻烦,一般服务器端使用json类库生成json字符串,会自动帮你处理好这种转移,自己组合就要注意转移双引号和反斜杠了
var s=`{
"goodsSingleId": "49daaf6e-e3b8-11e7-b85f-00163e136aec",
"goodsSingleName": "(332762)史丹利 STST14440-8-23 手持式 塑料收纳盒20"黄黑",
"goodsMainPhoto": "http://120.27.234.178:81/171218/f0735947-5881-4eec-a35d-b4b034931aef.jpg",
"generalPrice": "157"
}`;
s=s.replace(/"goodsSingleName": "([^\n]+)",/,function($0,$1){return '"goodsSingleName": "'+$1.replace(/"/g,'\\"')+'"'})
alert(s)
这个最好是后端输出前做下转义或者替换,不然前端json格式化就出错;
如果后端没办法配合那前端就只能接收字符串,再将不要的引号转义或者替换成单引号后再JSON.parse();
这个找后端给处理吧 接口定义的接受格式是json吧 这算后端的问题
楼上 说的有点意思,我也是刚学,需要多研究下
var goodsSingleName ="(332762)史丹利 STST14440-8-23 手持式 塑料收纳盒20\"黄黑";
//var goodsSingleName =$('#A').val();
var datas =
{
"goodsSingleId": "49daaf6e-e3b8-11e7-b85f-00163e136aec",
"goodsSingleName": goodsSingleName,
"goodsMainPhoto": "http://120.27.234.178:81/171218/f0735947-5881-4eec-a35d-b4b034931aef.jpg",
"generalPrice": "157"
}
要么用"\"转意,要么直接获取值自己处理
可以先看一下你的数据库是不是存的就存在
直接调用replace替换掉
前端不要想着处理这种错误,本身就是错误的json格式,让后端处理,还有对于复杂字符串可采取base64方式传递
我建议你在后台处理,而不是在前台处理。
这个问题昨天我同事刚碰到 解决办法很简单:
你传给前端的json字符串 在后台不要用string去拼接,而是通过JSON的工具类去包装,
然后response.toWrite(jsonObject.toString);
这样你前端接收的json字符串就给你自动转义好了 里面的引号 斜杆都转义好了
如果不是bug,建议在后台处理,接收参数goodsSingleName后,截取字符串处理。
nices,可以replace掉
在网上找个json格式转换可以解决