如何测试字符串是否为 JSON?

2022-08-30 00:17:09

我有一个简单的AJAX调用,服务器将返回包含有用数据的JSON字符串或PHP函数生成的错误消息字符串。如何测试此数据是 JSON 字符串还是错误消息。mysql_error()

最好使用一个名为函数的函数,就像您可以使用该函数来测试某些内容是否是数组一样。isJSONinstanceof

这就是我想要的:

if (isJSON(data)){
    //do some data stuff
}else{
    //report the error
    alert(data);
}

答案 1

使用 JSON.parse

function isJson(str) {
    try {
        JSON.parse(str);
    } catch (e) {
        return false;
    }
    return true;
}

答案 2

此代码为 or 或 或全部将返回 true。JSON.parse(1234)JSON.parse(0)JSON.parse(false)JSON.parse(null)

function isJson(str) {
    try {
        JSON.parse(str);
    } catch (e) {
        return false;
    }
    return true;
}

所以我以这种方式重写了代码:

function isJson(item) {
    item = typeof item !== "string"
        ? JSON.stringify(item)
        : item;

    try {
        item = JSON.parse(item);
    } catch (e) {
        return false;
    }

    if (typeof item === "object" && item !== null) {
        return true;
    }

    return false;
}

测试结果:

是杰森测试结果