首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何测试字符串是否为JSON?

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

Stack Overflow用户
提问于 2012-03-21 20:38:58
回答 17查看 311.1K关注 0票数 249

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

使用一个名为isJSON的函数会很好,就像您可以使用函数instanceof来测试某个东西是否是一个数组一样。

这就是我想要的:

代码语言:javascript
复制
if (isJSON(data)){
    //do some data stuff
}else{
    //report the error
    alert(data);
}
EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2012-03-21 20:42:27

使用JSON.parse

代码语言:javascript
复制
function isJson(str) {
    try {
        JSON.parse(str);
    } catch (e) {
        return false;
    }
    return true;
}
票数 410
EN

Stack Overflow用户

发布于 2015-10-27 21:56:03

此代码为JSON.parse(1234)JSON.parse(0)JSON.parse(false)JSON.parse(null),所有这些都将返回true。

代码语言:javascript
复制
function isJson(str) {
    try {
        JSON.parse(str);
    } catch (e) {
        return false;
    }
    return true;
}

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

代码语言:javascript
复制
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;
}

测试结果:

isJson test result

票数 107
EN

Stack Overflow用户

发布于 2012-03-21 20:43:03

如果服务器使用JSON进行响应,那么它将使用application/json内容类型,如果它使用纯文本消息进行响应,那么它应该使用text/plain内容类型。确保服务器使用正确的content-type进行响应,并进行测试。

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9804777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档