Javascript Fetch Response.json错误转义字符错误
因此,本质上我有一个获取,它可以访问一个API,然后获取一个JSON对象作为响应。问题是,API将为单引号添加一个转义字符,例如Javascript Fetch Response.json错误转义字符错误,javascript,json,http,fetch,Javascript,Json,Http,Fetch,因此,本质上我有一个获取,它可以访问一个API,然后获取一个JSON对象作为响应。问题是,API将为单引号添加一个转义字符,例如不是。这会在JSON.parse()上抛出一个错误,因此我想在调用response.JSON()之前操作响应体。这是我目前的代码: httpCallout(){ fetch('/1.0/?method=getQuote&lang=en&format=json',{method:“GET”,cache:“no cache”}) 。然后(响应=>{ 返回response.j
不是
。这会在JSON.parse()上抛出一个错误,因此我想在调用response.JSON()之前操作响应体。这是我目前的代码:
httpCallout(){
fetch('/1.0/?method=getQuote&lang=en&format=json',{method:“GET”,cache:“no cache”})
。然后(响应=>{
返回response.json()
})
。然后((数据)=>{
const quote=data.quoteText;
这是我的国家({
quote:quote,
作者:data.quoteAuthor
});
});
这就是颜色变化(rgb);
}
问题是,只要使用转义单引号调用response.json
。我知道我可以捕获错误,什么也不做,但我更喜欢一种解决方案,它允许我解析出转义的单引号,并且仍然从该调用设置我的状态
本质上,我想做的是,在运行response.json()之前,获取一个带有quoteText值的响应,类似于
“It's tirring不是吗?”
,并将其正确解析为“It's tirring不是吗?”
)因此不存在错误的转义字符。如果无法让数据提供程序清理其数据库或JSON编码管道,可以通过以下方式手动清理返回的文本:
- 使用(而不是)将
转换为文本响应
- 将有问题的钻头替换为
- 使用
函数httpCallout(){
获取('/1.0/?method=getQuote&lang=en&format=json',{method'GET',cache'no cache'})
.then(response=>response.text())
。然后(文本=>{
const cleanText=text.replaceAll(“\\'”,“'”);
返回JSON.parse(cleanText);
})
。然后(数据=>{
const quote=data.quoteText;
这是我的国家({
quote:quote,
作者:data.quoteAuthor
});
});
这就是颜色变化(rgb);
}
对于String.replaceAll()
的参数,您需要转义初始转义\
,而不是单引号,因此:
text.replaceAll(“\\'”,“'”)
JSON字符串没有什么问题,这就是我感到困惑的原因。当我通过邮递员,我没有得到错误。只有当我试图通过response.JSON()或JSON.parse(response.body)解析JSON时,您才能将.catch(err=>console.error(err))
添加到承诺流中,看看会发生什么,这将值得添加从服务器收到的确切字符串作为问题的一部分,为了让我们能够查看。@balexandre我有一个确切的错误,它是一个JSON错误,在转义单引号上。在我弄清楚发生了什么之后,我拿出了捕鼠器。这正是我所需要的。我之前使用了Body.text()
,但忘记了它当时是可以的,并且试图像处理字符串一样处理它。当然是一个大手掌,但这是一个教训。