Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Fetch Response.json错误转义字符错误_Javascript_Json_Http_Fetch - Fatal编程技术网

Javascript Fetch Response.json错误转义字符错误

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

因此,本质上我有一个获取,它可以访问一个API,然后获取一个JSON对象作为响应。问题是,API将为单引号添加一个转义字符,例如
不是
。这会在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()
,但忘记了它当时是可以的,并且试图像处理字符串一样处理它。当然是一个大手掌,但这是一个教训。