📜  反应捕获错误 json 消息 - Javascript (1)

📅  最后修改于: 2023-12-03 15:22:53.659000             🧑  作者: Mango

反应捕获错误 JSON 消息 - Javascript

在编写 JavaScript 代码的过程中,我们可能会遇到一些异常情况,比如请求返回的数据不是我们预期的 JSON 格式,这时我们就需要对这些异常情况进行处理。本文就是针对这样的异常情况,介绍如何在 JavaScript 中捕获错误的 JSON 消息并进行相应的处理。

目录
解析 JSON 的常规方法

在 JavaScript 中,我们通常使用内置的 JSON 对象来解析 JSON 格式的数据。具体解析的步骤如下:

  1. JSON.parse() 对字符串进行解析,返回一个 JavaScript 对象。
  2. 对返回的 JavaScript 对象进行操作,获得想要的数据。

下面是一个简单的示例:

const jsonString = '{"name":"John","age":30,"city":"New York"}';

const person = JSON.parse(jsonString);

console.log(person.name); // "John"
错误 JSON 的判断

在解析 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
反应捕获错误 JSON 的示例

接下来,我们以一个示例来展示如何在 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 数据时可能出现的错误。