📅  最后修改于: 2023-12-03 15:22:53.659000             🧑  作者: Mango
在编写 JavaScript 代码的过程中,我们可能会遇到一些异常情况,比如请求返回的数据不是我们预期的 JSON 格式,这时我们就需要对这些异常情况进行处理。本文就是针对这样的异常情况,介绍如何在 JavaScript 中捕获错误的 JSON 消息并进行相应的处理。
在 JavaScript 中,我们通常使用内置的 JSON 对象来解析 JSON 格式的数据。具体解析的步骤如下:
JSON.parse()
对字符串进行解析,返回一个 JavaScript 对象。下面是一个简单的示例:
const jsonString = '{"name":"John","age":30,"city":"New York"}';
const person = JSON.parse(jsonString);
console.log(person.name); // "John"
在解析 JSON 数据的时候,我们要假定接收到的数据是合法的 JSON 格式,如果不是合法的 JSON 格式,那么将会抛出错误。此时,我们需要在代码中针对错误进行相应处理,避免程序崩溃。
下面是一份错误 JSON 格式代码示例:
{
name: "John",
age: 30,
city: "New York"
}
正确的 JSON 格式应该是这样的:
{
"name": "John",
"age": 30,
"city": "New York"
}
我们可以通过正则表达式来检测一个字符串是否为一个正确的 JSON 格式:
function isJsonString(str) {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
}
console.log(isJsonString('{"name":"John","age":30,"city":"New York"}')); // true
console.log(isJsonString('{"name":"John","age":30,"city":"New York"')); // false
console.log(isJsonString('{name:"John",age:30,city:"New York"}')); // false
接下来,我们以一个示例来展示如何在 JavaScript 中捕获错误的 JSON 消息并进行相应的处理。
function getRequestJson(url) {
return fetch(url)
.then(response => {
if (response.ok) {
return response.json();
} else {
throw new Error('响应异常');
}
})
.catch(error => {
console.log('请求失败', error);
});
}
getRequestJson('https://api.github.com/users/ineo6')
.then(data => {
console.log(data);
})
.catch(error => {
console.log('JSON 格式错误', error);
});
在这个示例中,getRequestJson()
函数通过异步获取 url
上的数据,并返回解析后的 JSON 数据。如果获取数据成功,则将其返回,否则将会抛出一个错误。给出的错误信息为“响应异常”。
然后,我们用 getData()
函数来演示如何使用 getRequestJson()
函数。在此示例中,我们尝试从 Github API 获取一个不存在的用户信息。因为不存在的用户信息会返回错误的 JSON 格式,这导致解析 JSON 时可能会出错。在这个过程中,我们通过捕获错误来处理在解析 JSON 数据时可能出现的错误。